UNPKG

@nocobase/plugin-verification

Version:

User identity verification management, including SMS, TOTP authenticator, with extensibility.

10 lines (9 loc) • 10.2 kB
/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ "use strict";(self.webpackChunk_nocobase_plugin_verification_client_v2=self.webpackChunk_nocobase_plugin_verification_client_v2||[]).push([["290"],{289:function(e,t,n){n.r(t),n.d(t,{default:function(){return S},recursiveTrim:function(){return w},submitVerifierForm:function(){return E}});var r=n(375),i=n(485),o=n(694),a=n(625),u=n(59),l=n(773),c=n(155),s=n.n(c),f=n(488),m=n(373);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t,n,r,i,o,a){try{var u=e[o](a),l=u.value}catch(e){n(e);return}u.done?t(l):Promise.resolve(l).then(r,i)}function y(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(e){p(o,r,i,a,u,"next",e)}function u(e){p(o,r,i,a,u,"throw",e)}a(void 0)})}}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function v(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,i=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o=[],a=!0,u=!1;try{for(i=i.call(e);!(a=(n=i.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){u=!0,r=e}finally{try{a||null==i.return||i.return()}finally{if(u)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){var n,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(a,"next",{value:l(0)}),u(a,"throw",{value:l(1)}),u(a,"return",{value:l(2)}),"function"==typeof Symbol&&u(a,Symbol.iterator,{value:function(){return this}}),a;function l(u){return function(l){var c=[u,l];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(i=2&c[0]?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){o.label=c[1];break}if(6===c[0]&&o.label<i[1]){o.label=i[1],i=c;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(c);break}i[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function w(e){return"string"==typeof e?e.trim():Array.isArray(e)?e.map(function(e){return w(e)}):e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"?Object.fromEntries(Object.entries(e).map(function(e){var t=h(e,2);return[t[0],w(t[1])]})):e}function E(e){return y(function(){var t,n,r;return g(this,function(i){switch(i.label){case 0:if(n=w(e.raw.options||{}),"create"!==e.mode)return[3,2];return[4,e.resource.create({values:v(b({},e.raw),{options:n})})];case 1:case 3:return i.sent(),e.onSubmitted(),[2];case 2:if((null==(t=e.record)?void 0:t.name)==null)return[3,4];return r=v(b({},(0,l.cloneDeep)(e.record),e.raw),{options:b({},e.record.options||{},n)}),[4,e.resource.update({filterByTk:e.record.name,values:r})];case 4:throw Error("Edit mode requires record.name; got ".concat(JSON.stringify(e.record)))}})})()}function O(){return(0,o.useFlowContext)().api.resource("verifiers")}function A(e){var t,n=(0,f.Au)().t,r=(0,f.kj)(),d=(0,i.useApp)().pm.get(m.A),p=O(),b=h(u.Form.useForm(),1)[0],v=h((0,c.useState)(!1),2),w=v[0],A=v[1],S=(0,c.useMemo)(function(){return e.verificationTypeOptions.map(function(e){return{value:e.name,label:r(e.title||e.name)}})},[e.verificationTypeOptions,r]),T=(0,c.useMemo)(function(){return"edit"===e.mode?(0,l.cloneDeep)(e.record||{}):{name:(0,o.randomId)("v_"),verificationType:e.verificationType,options:{}}},[e.mode,e.record,e.verificationType]);(0,c.useEffect)(function(){b.setFieldsValue(T)},[b,T]);var j=(0,c.useMemo)(function(){var t,n,r=null==d||null==(n=d.verificationManager.getVerification(e.verificationType))||null==(t=n.components)?void 0:t.AdminSettingsFormLoader;return r?(0,c.lazy)(r):null},[d,e.verificationType]),k=(0,a.useMemoizedFn)(function(){return y(function(){var t;return g(this,function(n){switch(n.label){case 0:return[4,b.validateFields()];case 1:t=n.sent(),A(!0),n.label=2;case 2:return n.trys.push([2,,4,5]),[4,E({raw:t,mode:e.mode,record:e.record,resource:p,onSubmitted:e.onSubmitted})];case 3:return n.sent(),[3,5];case 4:return A(!1),[7];case 5:return[2]}})})()});return s().createElement(i.DrawerFormLayout,{title:n("create"===e.mode?"Add new":"Edit"),onSubmit:k,submitting:w,submitText:n("Submit"),cancelText:n("Cancel")},s().createElement(u.Form,{form:b,layout:"vertical",initialValues:T},s().createElement(u.Form.Item,{name:"name",label:n("UID"),rules:[{required:!0,message:n("Please enter a UID")},{pattern:/^[a-zA-Z0-9_-]+$/,message:n("a-z, A-Z, 0-9, _, -")}]},s().createElement(u.Input,{disabled:"edit"===e.mode})),s().createElement(u.Form.Item,{name:"title",label:n("Title")},s().createElement(u.Input,null)),s().createElement(u.Form.Item,{name:"description",label:n("Description")},s().createElement(u.Input.TextArea,null)),s().createElement(u.Form.Item,{name:"verificationType",hidden:!0},s().createElement(u.Input,null)),"edit"===e.mode?s().createElement(u.Form.Item,{label:n("Verification type")},s().createElement(u.Tag,null,null==(t=S.find(function(t){return t.value===e.verificationType}))?void 0:t.label)):null,j?s().createElement(c.Suspense,{fallback:null},s().createElement(j,null)):null))}function S(){var e,t=(0,f.Au)().t,n=(0,f.kj)(),l=(0,o.useFlowContext)(),m=u.theme.useToken().token,d=u.App.useApp().modal,p=O(),b=h((0,c.useState)(1),2),v=b[0],w=b[1],E=h((0,c.useState)([]),2),S=E[0],T=E[1],j=(e=O(),(0,a.useRequest)(function(){return y(function(){var t,n,r;return g(this,function(i){switch(i.label){case 0:return[4,e.listTypes()];case 1:return[2,Array.isArray(r=Array.isArray(n=null==(t=i.sent())?void 0:t.data)?n:null==n?void 0:n.data)?r:[]]}})})()},{cacheKey:"@nocobase/plugin-verification:verifiers:listTypes"})).data,k=(0,c.useMemo)(function(){return j||[]},[j]),I=(0,a.useRequest)(function(){return y(function(){return g(this,function(e){switch(e.label){case 0:return[4,p.list({page:v,pageSize:50,appends:[]})];case 1:var t,n,r,i,o,a,u,l;return[2,(a=Array.isArray(o=null==(i=null==(t=e.sent())?void 0:t.data)?void 0:i.data)?o:Array.isArray(null==o?void 0:o.data)?o.data:[],u=Array.isArray(o)||null==o?void 0:o.meta,{records:a,total:null!=(n=null!=(r=(l=(null==i?void 0:i.meta)||u||{}).count)?r:l.total)?n:a.length})]}})})()},{refreshDeps:[v]}),D=I.data,F=I.loading,x=I.refresh,P=(0,a.useMemoizedFn)(function(e,t,n){l.viewer.drawer({width:"50%",closable:!0,content:function(){return s().createElement(A,{mode:e,verificationType:t,verificationTypeOptions:k,record:n,onSubmitted:function(){return x()}})}})}),C=(0,a.useMemoizedFn)(function(e){d.confirm({title:t("Delete"),content:t("Are you sure you want to delete it?"),onOk:function(){return y(function(){return g(this,function(t){switch(t.label){case 0:return[4,p.destroy({filterByTk:e})];case 1:return t.sent(),T([]),x(),[2]}})})()}})}),_=(0,a.useMemoizedFn)(function(e){var t=k.find(function(t){return t.name===e});return n((null==t?void 0:t.title)||e||"")}),M=(0,c.useMemo)(function(){return[{title:t("UID"),dataIndex:"name"},{title:t("Title"),dataIndex:"title"},{title:t("Verification type"),dataIndex:"verificationType",render:function(e){return e?s().createElement(u.Tag,null,_(e)):null}},{title:t("Description"),dataIndex:"description"},{title:t("Actions"),width:160,render:function(e,n){return s().createElement(u.Space,null,s().createElement("a",{onClick:function(){n.verificationType&&P("edit",n.verificationType,n)}},t("Edit")),s().createElement("a",{onClick:function(){return null!=n.name&&C(n.name)}},t("Delete")))}}]},[C,P,t,_]);return s().createElement(u.Card,{variant:"borderless"},s().createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:m.marginSM,marginBottom:m.margin}},s().createElement(u.Button,{icon:s().createElement(r.DeleteOutlined,null),disabled:!S.length,onClick:function(){return C(S)}},t("Delete")),s().createElement(u.Dropdown,{menu:{items:k.map(function(e){return{key:e.name,label:n(e.title||e.name)}}),onClick:function(e){P("create",e.key)}},disabled:!k.length},s().createElement(u.Button,{type:"primary",icon:s().createElement(r.PlusOutlined,null)},t("Add new")," ",s().createElement(r.DownOutlined,null)))),s().createElement(i.Table,{rowKey:"name",loading:F,columns:M,dataSource:(null==D?void 0:D.records)||[],rowSelection:{selectedRowKeys:S,onChange:T},pagination:{current:v,pageSize:50,total:(null==D?void 0:D.total)||0,showSizeChanger:!1,onChange:w}}))}}}]);