@nocobase/plugin-auth 1.6.0-alpha.1 → 1.6.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/{938.index.js → 0091d4359312cb07.js} +1 -1
- package/dist/client/index.js +1 -1
- package/dist/externalVersion.js +8 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -2
- package/dist/locale/en-US.json +2 -1
- package/dist/locale/zh-CN.json +2 -1
- package/dist/node_modules/cron/package.json +1 -1
- package/dist/server/actions/auth.js +6 -0
- package/dist/server/basic-auth.js +4 -1
- package/dist/server/collections/authenticators.js +1 -0
- package/dist/server/collections/token-blacklist.js +1 -0
- package/dist/server/collections/users-authenticators.js +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +5 -2
- package/dist/server/plugin.js +43 -39
- package/dist/server/storer.d.ts +8 -2
- package/dist/server/storer.js +28 -3
- package/dist/server/token-blacklist.js +13 -2
- package/package.json +2 -2
- /package/dist/client/{851.index.js → 1c5e32ff8bef5e4a.js} +0 -0
- /package/dist/client/{890.index.js → 43e9587ca4936ffe.js} +0 -0
- /package/dist/client/{280.index.js → 6992b2fd9b0275b1.js} +0 -0
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
"use strict";(self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["938"],{510:function(e,t,n){n.r(t),n.d(t,{Options:function(){return C},SignInForm:function(){return y},SignUpForm:function(){return P},useRedirect:function(){return m},useSignUp:function(){return O},useSignIn:function(){return f}});var r=n("772"),o=n("156"),i=n.n(o),a=n("573"),u=n("128"),c=n("505"),s=n(581);function l(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,o,i,a){try{var u=e[i](a),c=u.value}catch(e){n(e);return}u.done?t(c):Promise.resolve(c).then(r,o)}function m(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];var e,t,n=(0,u.useNavigate)();var r=(e=(0,u.useSearchParams)(),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,u=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){u=!0,r=e}finally{try{!a&&null!=o.return&&o.return()}finally{if(u)throw r}}return i}}(e,1)||function(e,t){if(e){if("string"==typeof e)return l(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 l(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.")}())[0];return(0,o.useCallback)(function(){n(r.get("redirect")||"/admin",{replace:!0})},[n,r])}var f=function(e){var t=(0,c.useForm)(),n=(0,r.useAPIClient)(),o=m(),i=(0,r.useCurrentUserContext)().refreshAsync;return{run:function(){var r;return(r=function(){return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,function(r){switch(r.label){case 0:return[4,t.submit()];case 1:return r.sent(),[4,n.auth.signIn(t.values,e)];case 2:return r.sent(),[4,i()];case 3:return r.sent(),o(),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)})})()}}},d={type:"object",name:"passwordForm","x-component":"FormV2",properties:{account:{type:"string","x-component":"Input","x-validator":'{{(value) => {\n if (!value) {\n return t("Please enter your username or email");\n }\n if (value.includes(\'@\')) {\n if (!/^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(value)) {\n return t("Please enter a valid email");\n }\n } else {\n return /^[^@.<>"\'/]{1,50}$/.test(value) || t("Please enter a valid username");\n }\n }}}',"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Username/Email")}}',style:{}}},password:{type:"string","x-component":"Password",required:!0,"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Password")}}',style:{}}},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign in")}}',type:"void","x-component":"Action","x-component-props":{htmlType:"submit",block:!0,type:"primary",useAction:"{{ useBasicSignIn }}",style:{width:"100%"}}}}},signUp:{type:"void","x-component":"Link","x-component-props":{to:"{{ signUpLink }}"},"x-content":'{{t("Create an account")}}',"x-visible":"{{ allowSignUp }}"}}},y=function(e){var t=(0,a.o$)().t,o=e.authenticator,u=o.authType,c=o.name,l=o.options,p=!!(0,r.useLazy)(function(){return s("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"useSignUpForms")()[u]&&null!=l&&!!l.allowSignUp,m="/signup?name=".concat(c);return i().createElement(r.SchemaComponent,{schema:d,scope:{useBasicSignIn:function(){return f(c)},allowSignUp:p,signUpLink:m,t:t}})},b=n("875"),v=n("721"),h=n("238"),g=n("308");function w(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){n(e);return}u.done?t(c):Promise.resolve(c).then(r,o)}function x(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,o,i;r=e,o=t,i=n[t],o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i})}return e}function S(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var O=function(e){var t=(0,u.useNavigate)(),n=(0,c.useForm)(),o=(0,r.useAPIClient)(),i=(0,h.useTranslation)().t;return{run:function(){var r;return(r=function(){var r;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,function(a){switch(a.label){case 0:return[4,n.submit()];case 1:return a.sent(),[4,o.auth.signUp(n.values,null==e?void 0:e.authenticator)];case 2:return a.sent(),v.message.success((null==e?void 0:null===(r=e.message)||void 0===r?void 0:r.success)||i("Sign up successfully, and automatically jump to the sign in page")),setTimeout(function(){t("/signin")},2e3),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){w(i,n,o,a,u,"next",e)}function u(e){w(i,n,o,a,u,"throw",e)}a(void 0)})})()}}},P=function(e){var t,n=e.authenticatorName,c=(0,a.o$)().t,s=(0,g.u)(n).options,l=s.signupForm,p=(0,o.useMemo)(function(){return l.filter(function(e){return e.show}).reduce(function(e,t){return e[t.field]=S(x({},t.uiSchema),{required:t.required,"x-decorator":"FormItem"}),e},{})},[l]);if(!(null==s?void 0:s.allowSignUp))return i().createElement(u.Navigate,{to:"/not-found",replace:!0});var m=(t=p,{type:"object",name:(0,b.uid)(),"x-component":"FormV2",properties:S(x({},t),{password:{type:"string",required:!0,title:'{{t("Password")}}',"x-component":"Password","x-decorator":"FormItem","x-component-props":{checkStrength:!0,style:{}},"x-reactions":[{dependencies:[".confirm_password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},confirm_password:{type:"string",required:!0,"x-component":"Password","x-decorator":"FormItem",title:'{{t("Confirm password")}}',"x-component-props":{style:{}},"x-reactions":[{dependencies:[".password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign up")}}',type:"void","x-component":"Action","x-component-props":{block:!0,type:"primary",htmlType:"submit",useAction:"{{ useBasicSignUp }}",style:{width:"100%"}}}}},link:{type:"void","x-component":"div",properties:{link:{type:"void","x-component":"Link","x-component-props":{to:"/signin"},"x-content":'{{t("Log in with an existing account")}}'}}}})});return i().createElement(r.SchemaComponent,{schema:m,scope:{useBasicSignUp:function(){return O({authenticator:n})},t:c}})},j=n("632");function k(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(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){k(e,t,n[t])})}return e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var I=function(){var e=(0,r.useRecord)(),t=(0,r.useCollectionManager)().getCollection("users").fields.filter(function(e){var t;return!e.hidden&&!e.target&&e.interface&&!(null===(t=e.uiSchema)||void 0===t?void 0:t["x-read-pretty"])}),n=t.map(function(e){var t;return{value:e.name,label:null===(t=e.uiSchema)||void 0===t?void 0:t.title}}),u=(0,o.useMemo)(function(){var n=((null===(u=e.options)||void 0===u?void 0:null===(a=u.public)||void 0===a?void 0:a.signupForm)||[]).filter(function(e){return t.find(function(t){return t.name===e.field})}),r=!0,o=!1,i=void 0;try{for(var a,u,c,s=t[Symbol.iterator]();!(r=(c=s.next()).done);r=!0)!function(){var e=c.value;!n.find(function(t){return t.field===e.name})&&n.push({field:e.name,show:"username"===e.name,required:"username"===e.name})}()}catch(e){o=!0,i=e}finally{try{!r&&null!=s.return&&s.return()}finally{if(o)throw i}}return n},[t,e]);return(0,o.useEffect)(function(){var t;e.options=A(F({},e.options),{public:A(F({},null===(t=e.options)||void 0===t?void 0:t.public),{signupForm:u})})},[e,u]),i().createElement(r.SchemaComponent,{components:{ArrayTable:j.ArrayTable},schema:{type:"void",properties:{signupForm:{title:'{{t("Sign up form")}}',type:"array","x-decorator":"FormItem","x-component":"ArrayTable","x-component-props":{bordered:!1},"x-validator":"{{ (value) => {\n const check = value?.some((item) => ['username', 'email'].includes(item.field) && item.show && item.required);\n if (!check) {\n return t('At least one of the username or email fields is required');\n }\n} }}",default:u,items:{type:"object","x-decorator":"ArrayItems.Item",properties:{column0:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:20,align:"center"},properties:{sort:{type:"void","x-component":"ArrayTable.SortHandle"}}},column1:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:100,title:(0,a.KQ)("Field")},properties:{field:{type:"string","x-decorator":"FormItem","x-component":"Select",enum:n,"x-read-pretty":!0}}},column2:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Show")},properties:{show:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".required"],fulfill:{state:{value:"{{ $deps[0] || $self.value }}"}}}}}},column3:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Required")},properties:{required:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".show"],fulfill:{state:{value:"{{ !$deps[0] ? false : $self.value }}"}}}}}}}}}}}})},C=function(){var e=(0,a.o$)().t;return i().createElement(r.SchemaComponent,{scope:{t:e},components:{Alert:v.Alert,SignupFormSettings:I,FormTab:j.FormTab},schema:{type:"object",properties:{notice:{type:"void","x-decorator":"FormItem","x-component":"Alert","x-component-props":{showIcon:!0,message:'{{t("The authentication allows users to sign in via username or email.")}}'}},public:{type:"object",properties:{collapse:{type:"void","x-component":"FormTab",properties:{basic:{type:"void","x-component":"FormTab.TabPane","x-component-props":{tab:(0,a.KQ)("Sign up settings")},properties:k({allowSignUp:{"x-decorator":"FormItem",type:"boolean",title:'{{t("Allow to sign up")}}',"x-component":"Checkbox",default:!0}},(0,b.uid)(),{type:"void","x-component":"SignupFormSettings"})}}}}}}}})}}}]);
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["938"],{510:function(e,t,n){n.r(t),n.d(t,{Options:function(){return C},SignInForm:function(){return y},SignUpForm:function(){return P},useRedirect:function(){return m},useSignUp:function(){return O},useSignIn:function(){return f}});var r=n("772"),o=n("156"),i=n.n(o),a=n("573"),u=n("128"),c=n("505"),s=n(581);function l(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,o,i,a){try{var u=e[i](a),c=u.value}catch(e){n(e);return}u.done?t(c):Promise.resolve(c).then(r,o)}function m(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];var e,t,n=(0,u.useNavigate)();var r=(e=(0,u.useSearchParams)(),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,u=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){u=!0,r=e}finally{try{!a&&null!=o.return&&o.return()}finally{if(u)throw r}}return i}}(e,1)||function(e,t){if(e){if("string"==typeof e)return l(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 l(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.")}())[0];return(0,o.useCallback)(function(){n(r.get("redirect")||"/admin",{replace:!0})},[n,r])}var f=function(e){var t=(0,c.useForm)(),n=(0,r.useAPIClient)(),o=m(),i=(0,r.useCurrentUserContext)().refreshAsync;return{run:function(){var r;return(r=function(){return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,function(r){switch(r.label){case 0:return[4,t.submit()];case 1:return r.sent(),[4,n.auth.signIn(t.values,e)];case 2:return r.sent(),[4,i()];case 3:return r.sent(),o(),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)})})()}}},d={type:"object",name:"passwordForm","x-component":"FormV2",properties:{account:{type:"string","x-component":"Input","x-validator":'{{(value) => {\n if (!value) {\n return t("Please enter your username or email");\n }\n if (value.includes(\'@\')) {\n if (!/^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(value)) {\n return t("Please enter a valid email");\n }\n } else {\n return /^[^@.<>"\'/]{1,50}$/.test(value) || t("Please enter a valid username");\n }\n }}}',"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Username/Email")}}',style:{}}},password:{type:"string","x-component":"Password",required:!0,"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Password")}}',style:{}}},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign in")}}',type:"void","x-component":"Action","x-component-props":{htmlType:"submit",block:!0,type:"primary",useAction:"{{ useBasicSignIn }}",style:{width:"100%"}}}}},signUp:{type:"void","x-component":"Link","x-component-props":{to:"{{ signUpLink }}"},"x-content":'{{t("Create an account")}}',"x-visible":"{{ allowSignUp }}"}}},y=function(e){var t=(0,a.o$)().t,o=e.authenticator,u=o.authType,c=o.name,l=o.options,p=!!(0,r.useLazy)(function(){return s("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"useSignUpForms")()[u]&&null!=l&&!!l.allowSignUp,m="/signup?name=".concat(c);return i().createElement(r.SchemaComponent,{schema:d,scope:{useBasicSignIn:function(){return f(c)},allowSignUp:p,signUpLink:m,t:t}})},b=n("875"),v=n("721"),h=n("238"),g=n("308");function w(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){n(e);return}u.done?t(c):Promise.resolve(c).then(r,o)}function x(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,o,i;r=e,o=t,i=n[t],o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i})}return e}function S(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var O=function(e){var t=(0,u.useNavigate)(),n=(0,c.useForm)(),o=(0,r.useAPIClient)(),i=(0,h.useTranslation)().t;return{run:function(){var r;return(r=function(){var r;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}(this,function(a){switch(a.label){case 0:return[4,n.submit()];case 1:return a.sent(),[4,o.auth.signUp(n.values,null==e?void 0:e.authenticator)];case 2:return a.sent(),v.message.success((null==e?void 0:null===(r=e.message)||void 0===r?void 0:r.success)||i("Sign up successfully, and automatically jump to the sign in page")),setTimeout(function(){t("/signin")},2e3),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){w(i,n,o,a,u,"next",e)}function u(e){w(i,n,o,a,u,"throw",e)}a(void 0)})})()}}},P=function(e){var t,n=e.authenticatorName,c=(0,a.o$)().t,s=(0,g.u)(n).options,l=s.signupForm,p=(0,o.useMemo)(function(){return l.filter(function(e){return e.show}).reduce(function(e,t){return e[t.field]=S(x({},t.uiSchema),{required:t.required,"x-decorator":"FormItem"}),e},{})},[l]);if(!(null==s?void 0:s.allowSignUp))return i().createElement(u.Navigate,{to:"/not-found",replace:!0});var m=(t=p,{type:"object",name:(0,b.uid)(),"x-component":"FormV2",properties:S(x({},t),{password:{type:"string",required:!0,title:'{{t("Password")}}',"x-component":"Password","x-decorator":"FormItem","x-validator":{password:!0},"x-component-props":{checkStrength:!0,style:{}},"x-reactions":[{dependencies:[".confirm_password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},confirm_password:{type:"string",required:!0,"x-component":"Password","x-decorator":"FormItem",title:'{{t("Confirm password")}}',"x-validator":{password:!0},"x-component-props":{style:{}},"x-reactions":[{dependencies:[".password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign up")}}',type:"void","x-component":"Action","x-component-props":{block:!0,type:"primary",htmlType:"submit",useAction:"{{ useBasicSignUp }}",style:{width:"100%"}}}}},link:{type:"void","x-component":"div",properties:{link:{type:"void","x-component":"Link","x-component-props":{to:"/signin"},"x-content":'{{t("Log in with an existing account")}}'}}}})});return i().createElement(r.SchemaComponent,{schema:m,scope:{useBasicSignUp:function(){return O({authenticator:n})},t:c}})},j=n("632");function k(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(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){k(e,t,n[t])})}return e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var I=function(){var e=(0,r.useRecord)(),t=(0,r.useCollectionManager)().getCollection("users").fields.filter(function(e){var t;return!e.hidden&&!e.target&&e.interface&&!(null===(t=e.uiSchema)||void 0===t?void 0:t["x-read-pretty"])}),n=t.map(function(e){var t;return{value:e.name,label:null===(t=e.uiSchema)||void 0===t?void 0:t.title}}),u=(0,o.useMemo)(function(){var n=((null===(u=e.options)||void 0===u?void 0:null===(a=u.public)||void 0===a?void 0:a.signupForm)||[]).filter(function(e){return t.find(function(t){return t.name===e.field})}),r=!0,o=!1,i=void 0;try{for(var a,u,c,s=t[Symbol.iterator]();!(r=(c=s.next()).done);r=!0)!function(){var e=c.value;!n.find(function(t){return t.field===e.name})&&n.push({field:e.name,show:"username"===e.name,required:"username"===e.name})}()}catch(e){o=!0,i=e}finally{try{!r&&null!=s.return&&s.return()}finally{if(o)throw i}}return n},[t,e]);return(0,o.useEffect)(function(){var t;e.options=A(F({},e.options),{public:A(F({},null===(t=e.options)||void 0===t?void 0:t.public),{signupForm:u})})},[e,u]),i().createElement(r.SchemaComponent,{components:{ArrayTable:j.ArrayTable},schema:{type:"void",properties:{signupForm:{title:'{{t("Sign up form")}}',type:"array","x-decorator":"FormItem","x-component":"ArrayTable","x-component-props":{bordered:!1},"x-validator":"{{ (value) => {\n const check = value?.some((item) => ['username', 'email'].includes(item.field) && item.show && item.required);\n if (!check) {\n return t('At least one of the username or email fields is required');\n }\n} }}",default:u,items:{type:"object","x-decorator":"ArrayItems.Item",properties:{column0:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:20,align:"center"},properties:{sort:{type:"void","x-component":"ArrayTable.SortHandle"}}},column1:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:100,title:(0,a.KQ)("Field")},properties:{field:{type:"string","x-decorator":"FormItem","x-component":"Select",enum:n,"x-read-pretty":!0}}},column2:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Show")},properties:{show:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".required"],fulfill:{state:{value:"{{ $deps[0] || $self.value }}"}}}}}},column3:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Required")},properties:{required:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".show"],fulfill:{state:{value:"{{ !$deps[0] ? false : $self.value }}"}}}}}}}}}}}})},C=function(){var e=(0,a.o$)().t;return i().createElement(r.SchemaComponent,{scope:{t:e},components:{Alert:v.Alert,SignupFormSettings:I,FormTab:j.FormTab},schema:{type:"object",properties:{notice:{type:"void","x-decorator":"FormItem","x-component":"Alert","x-component-props":{showIcon:!0,message:'{{t("The authentication allows users to sign in via username or email.")}}'}},public:{type:"object",properties:{collapse:{type:"void","x-component":"FormTab",properties:{basic:{type:"void","x-component":"FormTab.TabPane","x-component-props":{tab:(0,a.KQ)("Sign up settings")},properties:k({allowSignUp:{"x-decorator":"FormItem",type:"boolean",title:'{{t("Allow to sign up")}}',"x-component":"Checkbox",default:!0}},(0,b.uid)(),{type:"void","x-component":"SignupFormSettings"})}}}}}}}})}}}]);
|
package/dist/client/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("react-router-dom"),require("react"),require("@emotion/css")):"function"==typeof define&&define.amd?define("@nocobase/plugin-auth",["react-i18next","@formily/antd-v5","@formily/shared","@nocobase/utils/client","@nocobase/client","antd","@ant-design/icons","@formily/react","react-router-dom","react","@emotion/css"],e):"object"==typeof exports?exports["@nocobase/plugin-auth"]=e(require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("react-router-dom"),require("react"),require("@emotion/css")):t["@nocobase/plugin-auth"]=e(t["react-i18next"],t["@formily/antd-v5"],t["@formily/shared"],t["@nocobase/utils/client"],t["@nocobase/client"],t.antd,t["@ant-design/icons"],t["@formily/react"],t["react-router-dom"],t.react,t["@emotion/css"])}(self,function(t,e,n,r,o,i,u,c,a,s,f){return function(){var l,p,d,h,y,b={437:function(t,e,n){"use strict";n.r(e),n.d(e,{AuthLayout:function(){return q},useSignIn:function(){return j},PluginAuthClient:function(){return O},AuthenticatorsContextProvider:function(){return k},default:function(){return C},AuthenticatorsContext:function(){return u.H},useAuthenticator:function(){return u.u}});var r=n("772"),o=n("584"),i=n("573"),u=n("308"),c=n(581);function a(t,e,n,r,o,i,u){try{var c=t[i](u),a=c.value}catch(t){n(t);return}c.done?e(a):Promise.resolve(a).then(r,o)}function s(t,e,n){return(s=h()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var o=new(Function.bind.apply(t,r));return n&&p(o,n.prototype),o}).apply(null,arguments)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(t){var e="function"==typeof Map?new Map:void 0;return(d=function(t){var n;if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;if("function"!=typeof t)throw TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return s(t,arguments,l(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,t)})(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(h=function(){return!!t})()}var y=(0,r.lazy)(function(){return c("imported_gs6osn_component",n.e("890").then(n.bind(n,387)))},"AuthProvider").AuthProvider,b=(0,r.lazy)(function(){return c("imported_kl5khg_component",n.e("938").then(n.bind(n,510)))},"Options","SignInForm","SignUpForm"),m=b.Options,g=b.SignInForm,v=b.SignUpForm,_=(0,r.lazy)(function(){return c("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"AuthLayout","SignInPage","SignUpPage"),x=_.AuthLayout,S=_.SignInPage,P=_.SignUpPage,A=(0,r.lazy)(function(){return c("imported_10vpsc8_component",n.e("851").then(n.bind(n,264)))},"Authenticator").Authenticator,w=(0,r.lazy)(function(){return c("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"AuthenticatorsContextProvider","AuthLayout"),k=w.AuthenticatorsContextProvider,q=w.AuthLayout,O=function(t){var e,n,r;function u(){var t,e,n,r,i,c,a;return!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,u),e=this,n=u,r=arguments,n=l(n),i=t=function(t,e){return e&&("object"===function(t){return t&&"undefined"!=typeof Symbol&&t.constructor===Symbol?"symbol":typeof t}(e)||"function"==typeof e)?e:function(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(e,h()?Reflect.construct(n,r||[],l(e).constructor):n.apply(e,r)),c="authTypes",a=new o.Registry,c in i?Object.defineProperty(i,c,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[c]=a,t}return!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(u,t),e=u,n=[{key:"registerType",value:function(t,e){this.authTypes.register(t,e)}},{key:"load",value:function(){var t,e=this;return(t=function(){return function(t,e){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=e.call(t,u)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}(this,function(t){return e.app.pluginSettingsManager.add(i.A7,{icon:"LoginOutlined",title:'{{t("Authentication", { ns: "'.concat(i.A7,'" })}}'),Component:A,aclSnippet:"pm.auth.authenticators"}),e.router.add("auth",{Component:"AuthLayout"}),e.router.add("auth.signin",{path:"/signin",Component:"SignInPage"}),e.router.add("auth.signup",{path:"/signup",Component:"SignUpPage"}),e.app.addComponents({AuthLayout:x,SignInPage:S,SignUpPage:P}),e.app.providers.unshift([y,{}]),e.registerType("Email/Password",{components:{SignInForm:g,SignUpForm:v,AdminSettingsForm:m}}),[2]})},function(){var e=this,n=arguments;return new Promise(function(r,o){var i=t.apply(e,n);function u(t){a(i,r,o,u,c,"next",t)}function c(t){a(i,r,o,u,c,"throw",t)}u(void 0)})})()}}],f(e.prototype,n),u}(d(r.Plugin)),j=function(t){return(0,r.useLazy)(function(){return c("imported_kl5khg_component",n.e("938").then(n.bind(n,510)))},"useSignIn")(t)},C=O},308:function(t,e,n){"use strict";n.d(e,{H:function(){return o},u:function(){return i}});var r=n(156),o=(0,r.createContext)([]);o.displayName="AuthenticatorsContext";var i=function(t){return(0,r.useContext)(o).find(function(e){return e.name===t})}},573:function(t,e,n){"use strict";n.d(e,{A7:function(){return i},KQ:function(){return c},o$:function(){return u}});var r=n(238),o=n(772),i="auth";function u(){return(0,r.useTranslation)([i,"client"],{nsMode:"fallback"})}function c(t){return o.i18n.t(t,{ns:[i,"client"],nsMode:"fallback"})}},581:function(t){t.exports=function(t,e){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(t,e),e}},482:function(t){"use strict";t.exports=u},964:function(t){"use strict";t.exports=f},632:function(t){"use strict";t.exports=e},505:function(t){"use strict";t.exports=c},875:function(t){"use strict";t.exports=n},772:function(t){"use strict";t.exports=o},584:function(t){"use strict";t.exports=r},721:function(t){"use strict";t.exports=i},156:function(t){"use strict";t.exports=s},238:function(e){"use strict";e.exports=t},128:function(t){"use strict";t.exports=a}},m={};function g(t){var e=m[t];if(void 0!==e)return e.exports;var n=m[t]={exports:{}};return b[t](n,n.exports,g),n.exports}return g.m=b,g.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return g.d(e,{a:e}),e},g.d=function(t,e){for(var n in e)g.o(e,n)&&!g.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},g.f={},g.e=function(t){return Promise.all(Object.keys(g.f).reduce(function(e,n){return g.f[n](t,e),e},[]))},g.u=function(t){return""+t+".index.js"},g.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l={},p="@nocobase/plugin-auth:",g.l=function(t,e,n,r){if(l[t]){l[t].push(e);return}if(void 0!==n){for(var o,i,u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var a=u[c];if(a.getAttribute("src")==t||a.getAttribute("data-webpack")==p+n){o=a;break}}}!o&&(i=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,g.nc&&o.setAttribute("nonce",g.nc),o.setAttribute("data-webpack",p+n),o.src=t),l[t]=[e];var s=function(e,n){o.onerror=o.onload=null,clearTimeout(f);var r=l[t];if(delete l[t],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(t){return t(n)}),e)return e(n)},f=setTimeout(s.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=s.bind(null,o.onerror),o.onload=s.bind(null,o.onload),i&&document.head.appendChild(o)},g.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},g.p="/static/plugins/@nocobase/plugin-auth/dist/client/",d={909:0},g.f.j=function(t,e){var n=g.o(d,t)?d[t]:void 0;if(0!==n){if(n)e.push(n[2]);else{var r=new Promise(function(e,r){n=d[t]=[e,r]});e.push(n[2]=r);var o=g.p+g.u(t),i=Error();g.l(o,function(e){if(g.o(d,t)&&(0!==(n=d[t])&&(d[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;i.message="Loading chunk "+t+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+t,t)}}},h=function(t,e){var n=e[0],r=e[1],o=e[2],i,u,c=0;if(n.some(function(t){return 0!==d[t]})){for(i in r)g.o(r,i)&&(g.m[i]=r[i]);o&&o(g)}for(t&&t(e);c<n.length;c++)u=n[c],g.o(d,u)&&d[u]&&d[u][0](),d[u]=0},(y=self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).forEach(h.bind(null,0)),y.push=h.bind(null,y.push.bind(y)),g("437")}()});
|
|
10
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("react-router-dom"),require("react"),require("@emotion/css")):"function"==typeof define&&define.amd?define("@nocobase/plugin-auth",["react-i18next","@formily/antd-v5","@formily/shared","@nocobase/utils/client","@nocobase/client","antd","@ant-design/icons","@formily/react","react-router-dom","react","@emotion/css"],e):"object"==typeof exports?exports["@nocobase/plugin-auth"]=e(require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@ant-design/icons"),require("@formily/react"),require("react-router-dom"),require("react"),require("@emotion/css")):t["@nocobase/plugin-auth"]=e(t["react-i18next"],t["@formily/antd-v5"],t["@formily/shared"],t["@nocobase/utils/client"],t["@nocobase/client"],t.antd,t["@ant-design/icons"],t["@formily/react"],t["react-router-dom"],t.react,t["@emotion/css"])}(self,function(t,e,n,r,o,i,u,c,a,s,f){return function(){var l,p,d,h,b,y,m={437:function(t,e,n){"use strict";n.r(e),n.d(e,{AuthLayout:function(){return j},useSignIn:function(){return O},PluginAuthClient:function(){return q},AuthenticatorsContextProvider:function(){return k},default:function(){return C},AuthenticatorsContext:function(){return u.H},useAuthenticator:function(){return u.u}});var r=n("772"),o=n("584"),i=n("573"),u=n("308"),c=n(581);function a(t,e,n,r,o,i,u){try{var c=t[i](u),a=c.value}catch(t){n(t);return}c.done?e(a):Promise.resolve(a).then(r,o)}function s(t,e,n){return(s=h()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var o=new(Function.bind.apply(t,r));return n&&p(o,n.prototype),o}).apply(null,arguments)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(t){var e="function"==typeof Map?new Map:void 0;return(d=function(t){var n;if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;if("function"!=typeof t)throw TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return s(t,arguments,l(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,t)})(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(h=function(){return!!t})()}var b=(0,r.lazy)(function(){return c("imported_gs6osn_component",n.e("890").then(n.bind(n,387)))},"AuthProvider").AuthProvider,y=(0,r.lazy)(function(){return c("imported_kl5khg_component",n.e("938").then(n.bind(n,510)))},"Options","SignInForm","SignUpForm"),m=y.Options,g=y.SignInForm,v=y.SignUpForm,_=(0,r.lazy)(function(){return c("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"AuthLayout","SignInPage","SignUpPage"),x=_.AuthLayout,w=_.SignInPage,S=_.SignUpPage,P=(0,r.lazy)(function(){return c("imported_10vpsc8_component",n.e("851").then(n.bind(n,264)))},"Authenticator").Authenticator,A=(0,r.lazy)(function(){return c("imported_-1ja1ffa_component",n.e("280").then(n.bind(n,492)))},"AuthenticatorsContextProvider","AuthLayout"),k=A.AuthenticatorsContextProvider,j=A.AuthLayout,q=function(t){var e,n,r;function u(){var t,e,n,r,i,c,a;return!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,u),e=this,n=u,r=arguments,n=l(n),i=t=function(t,e){return e&&("object"===function(t){return t&&"undefined"!=typeof Symbol&&t.constructor===Symbol?"symbol":typeof t}(e)||"function"==typeof e)?e:function(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(e,h()?Reflect.construct(n,r||[],l(e).constructor):n.apply(e,r)),c="authTypes",a=new o.Registry,c in i?Object.defineProperty(i,c,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[c]=a,t}return!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(u,t),e=u,n=[{key:"registerType",value:function(t,e){this.authTypes.register(t,e)}},{key:"load",value:function(){var t,e=this;return(t=function(){return function(t,e){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=e.call(t,u)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}(this,function(t){return e.app.pluginSettingsManager.add(i.A7,{icon:"LoginOutlined",title:'{{t("Authentication", { ns: "'.concat(i.A7,'" })}}'),Component:P,aclSnippet:"pm.auth.authenticators"}),e.router.add("auth",{Component:"AuthLayout"}),e.router.add("auth.signin",{path:"/signin",Component:"SignInPage"}),e.router.add("auth.signup",{path:"/signup",Component:"SignUpPage"}),e.app.addComponents({AuthLayout:x,SignInPage:w,SignUpPage:S}),e.app.providers.unshift([b,{}]),e.registerType("Email/Password",{components:{SignInForm:g,SignUpForm:v,AdminSettingsForm:m}}),[2]})},function(){var e=this,n=arguments;return new Promise(function(r,o){var i=t.apply(e,n);function u(t){a(i,r,o,u,c,"next",t)}function c(t){a(i,r,o,u,c,"throw",t)}u(void 0)})})()}}],f(e.prototype,n),u}(d(r.Plugin)),O=function(t){return(0,r.useLazy)(function(){return c("imported_kl5khg_component",n.e("938").then(n.bind(n,510)))},"useSignIn")(t)},C=q},308:function(t,e,n){"use strict";n.d(e,{H:function(){return o},u:function(){return i}});var r=n(156),o=(0,r.createContext)([]);o.displayName="AuthenticatorsContext";var i=function(t){return(0,r.useContext)(o).find(function(e){return e.name===t})}},573:function(t,e,n){"use strict";n.d(e,{A7:function(){return i},KQ:function(){return c},o$:function(){return u}});var r=n(238),o=n(772),i="auth";function u(){return(0,r.useTranslation)([i,"client"],{nsMode:"fallback"})}function c(t){return o.i18n.t(t,{ns:[i,"client"],nsMode:"fallback"})}},581:function(t){t.exports=function(t,e){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(t,e),e}},482:function(t){"use strict";t.exports=u},964:function(t){"use strict";t.exports=f},632:function(t){"use strict";t.exports=e},505:function(t){"use strict";t.exports=c},875:function(t){"use strict";t.exports=n},772:function(t){"use strict";t.exports=o},584:function(t){"use strict";t.exports=r},721:function(t){"use strict";t.exports=i},156:function(t){"use strict";t.exports=s},238:function(e){"use strict";e.exports=t},128:function(t){"use strict";t.exports=a}},g={};function v(t){var e=g[t];if(void 0!==e)return e.exports;var n=g[t]={exports:{}};return m[t](n,n.exports,v),n.exports}return v.m=m,v.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return v.d(e,{a:e}),e},v.d=function(t,e){for(var n in e)v.o(e,n)&&!v.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},v.f={},v.e=function(t){return Promise.all(Object.keys(v.f).reduce(function(e,n){return v.f[n](t,e),e},[]))},v.u=function(t){return""+({280:"6992b2fd9b0275b1",851:"1c5e32ff8bef5e4a",890:"43e9587ca4936ffe",938:"0091d4359312cb07"})[t]+".js"},v.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),v.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l={},p="@nocobase/plugin-auth:",v.l=function(t,e,n,r){if(l[t]){l[t].push(e);return}if(void 0!==n){for(var o,i,u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var a=u[c];if(a.getAttribute("src")==t||a.getAttribute("data-webpack")==p+n){o=a;break}}}!o&&(i=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,v.nc&&o.setAttribute("nonce",v.nc),o.setAttribute("data-webpack",p+n),o.src=t),l[t]=[e];var s=function(e,n){o.onerror=o.onload=null,clearTimeout(f);var r=l[t];if(delete l[t],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(t){return t(n)}),e)return e(n)},f=setTimeout(s.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=s.bind(null,o.onerror),o.onload=s.bind(null,o.onload),i&&document.head.appendChild(o)},v.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},v.p=(!(d=window.__nocobase_public_path__||"/").endsWith("/")&&(d+="/"),d+"static/plugins/@nocobase/plugin-auth/dist/client/"),h={909:0},v.f.j=function(t,e){var n=v.o(h,t)?h[t]:void 0;if(0!==n){if(n)e.push(n[2]);else{var r=new Promise(function(e,r){n=h[t]=[e,r]});e.push(n[2]=r);var o=v.p+v.u(t),i=Error();v.l(o,function(e){if(v.o(h,t)&&(0!==(n=h[t])&&(h[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;i.message="Loading chunk "+t+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+t,t)}}},b=function(t,e){var n=e[0],r=e[1],o=e[2],i,u,c=0;if(n.some(function(t){return 0!==h[t]})){for(i in r)v.o(r,i)&&(v.m[i]=r[i]);o&&o(v)}for(t&&t(e);c<n.length;c++)u=n[c],v.o(h,u)&&h[u]&&h[u][0](),h[u]=0},(y=self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).forEach(b.bind(null,0)),y.push=b.bind(null,y.push.bind(y)),v("437")}()});
|
package/dist/externalVersion.js
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
|
-
"@nocobase/client": "1.6.0-alpha.
|
|
11
|
+
"@nocobase/client": "1.6.0-alpha.11",
|
|
12
12
|
"react": "18.2.0",
|
|
13
|
-
"@nocobase/utils": "1.6.0-alpha.
|
|
14
|
-
"@nocobase/auth": "1.6.0-alpha.
|
|
15
|
-
"@nocobase/database": "1.6.0-alpha.
|
|
13
|
+
"@nocobase/utils": "1.6.0-alpha.11",
|
|
14
|
+
"@nocobase/auth": "1.6.0-alpha.11",
|
|
15
|
+
"@nocobase/database": "1.6.0-alpha.11",
|
|
16
16
|
"lodash": "4.17.21",
|
|
17
|
-
"@nocobase/cache": "1.6.0-alpha.
|
|
18
|
-
"@nocobase/server": "1.6.0-alpha.
|
|
19
|
-
"@nocobase/test": "1.6.0-alpha.
|
|
17
|
+
"@nocobase/cache": "1.6.0-alpha.11",
|
|
18
|
+
"@nocobase/server": "1.6.0-alpha.11",
|
|
19
|
+
"@nocobase/test": "1.6.0-alpha.11",
|
|
20
20
|
"@formily/antd-v5": "1.1.9",
|
|
21
21
|
"antd": "5.12.8",
|
|
22
22
|
"@formily/shared": "2.3.2",
|
|
@@ -25,5 +25,5 @@ module.exports = {
|
|
|
25
25
|
"react-i18next": "11.18.6",
|
|
26
26
|
"@emotion/css": "11.13.0",
|
|
27
27
|
"@ant-design/icons": "5.2.6",
|
|
28
|
-
"@nocobase/actions": "1.6.0-alpha.
|
|
28
|
+
"@nocobase/actions": "1.6.0-alpha.11"
|
|
29
29
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
export { AuthModel, BasicAuth, default } from './server';
|
|
9
|
+
export { AuthModel, BasicAuth, default, presetAuthType } from './server';
|
package/dist/index.js
CHANGED
|
@@ -38,12 +38,14 @@ var src_exports = {};
|
|
|
38
38
|
__export(src_exports, {
|
|
39
39
|
AuthModel: () => import_server.AuthModel,
|
|
40
40
|
BasicAuth: () => import_server.BasicAuth,
|
|
41
|
-
default: () => import_server.default
|
|
41
|
+
default: () => import_server.default,
|
|
42
|
+
presetAuthType: () => import_server.presetAuthType
|
|
42
43
|
});
|
|
43
44
|
module.exports = __toCommonJS(src_exports);
|
|
44
45
|
var import_server = __toESM(require("./server"));
|
|
45
46
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
47
|
0 && (module.exports = {
|
|
47
48
|
AuthModel,
|
|
48
|
-
BasicAuth
|
|
49
|
+
BasicAuth,
|
|
50
|
+
presetAuthType
|
|
49
51
|
});
|
package/dist/locale/en-US.json
CHANGED
|
@@ -28,5 +28,6 @@
|
|
|
28
28
|
"Show": "Show",
|
|
29
29
|
"Sign up settings": "Sign up settings",
|
|
30
30
|
"Sign up form": "Sign up form",
|
|
31
|
-
"At least one of the username or email fields is required": "At least one of the username or email fields is required"
|
|
31
|
+
"At least one of the username or email fields is required": "At least one of the username or email fields is required",
|
|
32
|
+
"Password is not allowed to be changed": "Password is not allowed to be changed"
|
|
32
33
|
}
|
package/dist/locale/zh-CN.json
CHANGED
|
@@ -28,5 +28,6 @@
|
|
|
28
28
|
"Show": "显示",
|
|
29
29
|
"Sign up settings": "注册设置",
|
|
30
30
|
"Sign up form": "注册表单",
|
|
31
|
-
"At least one of the username or email fields is required": "至少需要设置用户名或邮箱中的一个字段为必填字段"
|
|
31
|
+
"At least one of the username or email fields is required": "至少需要设置用户名或邮箱中的一个字段为必填字段",
|
|
32
|
+
"Password is not allowed to be changed": "密码不允许修改"
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"cron","description":"Cron jobs for your node","version":"2.4.4","author":"Nick Campbell <nicholas.j.campbell@gmail.com> (https://github.com/ncb000gt)","bugs":{"url":"https://github.com/kelektiv/node-cron/issues"},"repository":{"type":"git","url":"https://github.com/kelektiv/node-cron.git"},"main":"lib/cron","scripts":{"lint":"eslint {lib,tests}/*.js","test":"jest --coverage","test:watch":"jest --watch --coverage","test:types":"tsd","prepare":"husky install","release":"semantic-release"},"types":"types/index.d.ts","dependencies":{"@types/luxon":"~3.3.0","luxon":"~3.3.0"},"devDependencies":{"@commitlint/cli":"~17.6.6","@insurgentlab/commitlint-config":"^18.1.0","@insurgentlab/conventional-changelog-preset":"~6.0.3","@semantic-release/changelog":"~6.0.x","@semantic-release/commit-analyzer":"~9.0.x","@semantic-release/git":"~10.0.x","@semantic-release/github":"~8.1.x","@semantic-release/npm":"~10.0.x","@semantic-release/release-notes-generator":"~11.0.x","chai":"~4.2.x","eslint":"~8.36.x","eslint-config-prettier":"^8.7.x","eslint-config-standard":"~17.0.x","eslint-plugin-import":"~2.27.x","eslint-plugin-jest":"~27.2.x","eslint-plugin-n":"~15.6.x","eslint-plugin-prettier":"~4.2.x","eslint-plugin-promise":"~6.1.x","husky":"^8.0.3","jest":"~29.5.x","prettier":"~2.8.x","semantic-release":"~21.0.x","sinon":"^15.0.x","tsd":"^0.28.1"},"keywords":["cron","node cron","node-cron","schedule","scheduler","cronjob","cron job"],"license":"MIT","contributors":["Brandon der Blätter <https://interlucid.com/contact/> (https://github.com/intcreator)","Romain Beauxis <toots@rastageeks.org> (https://github.com/toots)","James Padolsey <> (https://github.com/jamespadolsey)","Finn Herpich <fh@three-heads.de> (https://github.com/ErrorProne)","Clifton Cunningham <clifton.cunningham@gmail.com> (https://github.com/cliftonc)","Eric Abouaf <eric.abouaf@gmail.com> (https://github.com/neyric)","humanchimp <morphcham@gmail.com> (https://github.com/humanchimp)","Craig Condon <craig@spiceapps.com> (https://github.com/spiceapps)","Dan Bear <daniel@hulu.com> (https://github.com/danhbear)","Vadim Baryshev <vadimbaryshev@gmail.com> (https://github.com/baryshev)","Leandro Ferrari <lfthomaz@gmail.com> (https://github.com/lfthomaz)","Gregg Zigler <greggzigler@gmail.com> (https://github.com/greggzigler)","Jordan Abderrachid <jabderrachid@gmail.com> (https://github.com/jordanabderrachid)","Masakazu Matsushita <matsukaz@gmail.com> (matsukaz)","Christopher Lunt <me@kirisu.co.uk> (https://github.com/kirisu)"],"jest":{"collectCoverage":true,"collectCoverageFrom":["lib/*.js"],"coverageThreshold":{"global":{"statements":80,"branches":80,"functions":70,"lines":80}}},"files":["lib","types","CHANGELOG.md","LICENSE","README.md"],"_lastModified":"
|
|
1
|
+
{"name":"cron","description":"Cron jobs for your node","version":"2.4.4","author":"Nick Campbell <nicholas.j.campbell@gmail.com> (https://github.com/ncb000gt)","bugs":{"url":"https://github.com/kelektiv/node-cron/issues"},"repository":{"type":"git","url":"https://github.com/kelektiv/node-cron.git"},"main":"lib/cron","scripts":{"lint":"eslint {lib,tests}/*.js","test":"jest --coverage","test:watch":"jest --watch --coverage","test:types":"tsd","prepare":"husky install","release":"semantic-release"},"types":"types/index.d.ts","dependencies":{"@types/luxon":"~3.3.0","luxon":"~3.3.0"},"devDependencies":{"@commitlint/cli":"~17.6.6","@insurgentlab/commitlint-config":"^18.1.0","@insurgentlab/conventional-changelog-preset":"~6.0.3","@semantic-release/changelog":"~6.0.x","@semantic-release/commit-analyzer":"~9.0.x","@semantic-release/git":"~10.0.x","@semantic-release/github":"~8.1.x","@semantic-release/npm":"~10.0.x","@semantic-release/release-notes-generator":"~11.0.x","chai":"~4.2.x","eslint":"~8.36.x","eslint-config-prettier":"^8.7.x","eslint-config-standard":"~17.0.x","eslint-plugin-import":"~2.27.x","eslint-plugin-jest":"~27.2.x","eslint-plugin-n":"~15.6.x","eslint-plugin-prettier":"~4.2.x","eslint-plugin-promise":"~6.1.x","husky":"^8.0.3","jest":"~29.5.x","prettier":"~2.8.x","semantic-release":"~21.0.x","sinon":"^15.0.x","tsd":"^0.28.1"},"keywords":["cron","node cron","node-cron","schedule","scheduler","cronjob","cron job"],"license":"MIT","contributors":["Brandon der Blätter <https://interlucid.com/contact/> (https://github.com/intcreator)","Romain Beauxis <toots@rastageeks.org> (https://github.com/toots)","James Padolsey <> (https://github.com/jamespadolsey)","Finn Herpich <fh@three-heads.de> (https://github.com/ErrorProne)","Clifton Cunningham <clifton.cunningham@gmail.com> (https://github.com/cliftonc)","Eric Abouaf <eric.abouaf@gmail.com> (https://github.com/neyric)","humanchimp <morphcham@gmail.com> (https://github.com/humanchimp)","Craig Condon <craig@spiceapps.com> (https://github.com/spiceapps)","Dan Bear <daniel@hulu.com> (https://github.com/danhbear)","Vadim Baryshev <vadimbaryshev@gmail.com> (https://github.com/baryshev)","Leandro Ferrari <lfthomaz@gmail.com> (https://github.com/lfthomaz)","Gregg Zigler <greggzigler@gmail.com> (https://github.com/greggzigler)","Jordan Abderrachid <jabderrachid@gmail.com> (https://github.com/jordanabderrachid)","Masakazu Matsushita <matsukaz@gmail.com> (matsukaz)","Christopher Lunt <me@kirisu.co.uk> (https://github.com/kirisu)"],"jest":{"collectCoverage":true,"collectCoverageFrom":["lib/*.js"],"coverageThreshold":{"global":{"statements":80,"branches":80,"functions":70,"lines":80}}},"files":["lib","types","CHANGELOG.md","LICENSE","README.md"],"_lastModified":"2025-01-09T10:48:45.668Z"}
|
|
@@ -45,6 +45,12 @@ var auth_default = {
|
|
|
45
45
|
// await next();
|
|
46
46
|
// },
|
|
47
47
|
changePassword: async (ctx, next) => {
|
|
48
|
+
const systemSettings = ctx.db.getRepository("systemSettings");
|
|
49
|
+
const settings = await systemSettings.findOne();
|
|
50
|
+
const enableChangePassword = settings.get("enableChangePassword");
|
|
51
|
+
if (enableChangePassword === false) {
|
|
52
|
+
ctx.throw(403, ctx.t("Password is not allowed to be changed", { ns: import_preset.namespace }));
|
|
53
|
+
}
|
|
48
54
|
const {
|
|
49
55
|
values: { oldPassword, newPassword, confirmPassword }
|
|
50
56
|
} = ctx.action.params;
|
|
@@ -72,7 +72,10 @@ class BasicAuth extends import_auth.BaseAuth {
|
|
|
72
72
|
const field = this.userCollection.getField("password");
|
|
73
73
|
const valid = await field.verify(password, user.password);
|
|
74
74
|
if (!valid) {
|
|
75
|
-
ctx.throw(401, ctx.t("The username/email or password is incorrect, please re-enter", { ns: import_preset.namespace })
|
|
75
|
+
ctx.throw(401, ctx.t("The username/email or password is incorrect, please re-enter", { ns: import_preset.namespace }), {
|
|
76
|
+
code: "INCORRECT_PASSWORD",
|
|
77
|
+
user
|
|
78
|
+
});
|
|
76
79
|
}
|
|
77
80
|
return user;
|
|
78
81
|
}
|
package/dist/server/index.d.ts
CHANGED
package/dist/server/index.js
CHANGED
|
@@ -38,14 +38,17 @@ var server_exports = {};
|
|
|
38
38
|
__export(server_exports, {
|
|
39
39
|
AuthModel: () => import_authenticator.AuthModel,
|
|
40
40
|
BasicAuth: () => import_basic_auth.BasicAuth,
|
|
41
|
-
default: () => import_plugin.default
|
|
41
|
+
default: () => import_plugin.default,
|
|
42
|
+
presetAuthType: () => import_preset.presetAuthType
|
|
42
43
|
});
|
|
43
44
|
module.exports = __toCommonJS(server_exports);
|
|
44
45
|
var import_basic_auth = require("./basic-auth");
|
|
45
46
|
var import_authenticator = require("./model/authenticator");
|
|
47
|
+
var import_preset = require("../preset");
|
|
46
48
|
var import_plugin = __toESM(require("./plugin"));
|
|
47
49
|
// Annotate the CommonJS export names for ESM import in node:
|
|
48
50
|
0 && (module.exports = {
|
|
49
51
|
AuthModel,
|
|
50
|
-
BasicAuth
|
|
52
|
+
BasicAuth,
|
|
53
|
+
presetAuthType
|
|
51
54
|
});
|
package/dist/server/plugin.js
CHANGED
|
@@ -41,6 +41,7 @@ __export(plugin_exports, {
|
|
|
41
41
|
});
|
|
42
42
|
module.exports = __toCommonJS(plugin_exports);
|
|
43
43
|
var import_server = require("@nocobase/server");
|
|
44
|
+
var import_utils = require("@nocobase/utils");
|
|
44
45
|
var import_preset = require("../preset");
|
|
45
46
|
var import_auth = __toESM(require("./actions/auth"));
|
|
46
47
|
var import_authenticators = __toESM(require("./actions/authenticators"));
|
|
@@ -48,7 +49,6 @@ var import_basic_auth = require("./basic-auth");
|
|
|
48
49
|
var import_authenticator = require("./model/authenticator");
|
|
49
50
|
var import_storer = require("./storer");
|
|
50
51
|
var import_token_blacklist = require("./token-blacklist");
|
|
51
|
-
var import_utils = require("@nocobase/utils");
|
|
52
52
|
class PluginAuthServer extends import_server.Plugin {
|
|
53
53
|
cache;
|
|
54
54
|
afterAdd() {
|
|
@@ -63,8 +63,10 @@ class PluginAuthServer extends import_server.Plugin {
|
|
|
63
63
|
store: "memory"
|
|
64
64
|
});
|
|
65
65
|
const storer = new import_storer.Storer({
|
|
66
|
+
app: this.app,
|
|
66
67
|
db: this.db,
|
|
67
|
-
cache: this.cache
|
|
68
|
+
cache: this.cache,
|
|
69
|
+
authManager: this.app.authManager
|
|
68
70
|
});
|
|
69
71
|
this.app.authManager.setStorer(storer);
|
|
70
72
|
if (!this.app.authManager.jwt.blacklist) {
|
|
@@ -127,11 +129,45 @@ class PluginAuthServer extends import_server.Plugin {
|
|
|
127
129
|
this.app.on("cache:del:auth", async ({ userId }) => {
|
|
128
130
|
await this.cache.del(`auth:${userId}`);
|
|
129
131
|
});
|
|
132
|
+
this.app.on("ws:message:auth:token", async ({ clientId, payload }) => {
|
|
133
|
+
if (!payload || !payload.token || !payload.authenticator) {
|
|
134
|
+
this.app.emit(`ws:removeTag`, {
|
|
135
|
+
clientId,
|
|
136
|
+
tagKey: "userId"
|
|
137
|
+
});
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const auth = await this.app.authManager.get(payload.authenticator, {
|
|
141
|
+
getBearerToken: () => payload.token,
|
|
142
|
+
app: this.app,
|
|
143
|
+
db: this.app.db,
|
|
144
|
+
cache: this.app.cache,
|
|
145
|
+
logger: this.app.logger
|
|
146
|
+
});
|
|
147
|
+
const user = await auth.check();
|
|
148
|
+
if (!user) {
|
|
149
|
+
this.app.logger.error(`Invalid token: ${payload.token}`);
|
|
150
|
+
this.app.emit(`ws:removeTag`, {
|
|
151
|
+
clientId,
|
|
152
|
+
tagKey: "userId"
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.app.emit(`ws:setTag`, {
|
|
157
|
+
clientId,
|
|
158
|
+
tagKey: "userId",
|
|
159
|
+
tagValue: user.id
|
|
160
|
+
});
|
|
161
|
+
this.app.emit(`ws:authorized`, {
|
|
162
|
+
clientId,
|
|
163
|
+
userId: user.id
|
|
164
|
+
});
|
|
165
|
+
});
|
|
130
166
|
this.app.auditManager.registerActions([
|
|
131
167
|
{
|
|
132
168
|
name: "auth:signIn",
|
|
133
169
|
getMetaData: async (ctx) => {
|
|
134
|
-
var _a
|
|
170
|
+
var _a;
|
|
135
171
|
let body = {};
|
|
136
172
|
if (ctx.status === 200) {
|
|
137
173
|
body = {
|
|
@@ -145,20 +181,10 @@ class PluginAuthServer extends import_server.Plugin {
|
|
|
145
181
|
}
|
|
146
182
|
return {
|
|
147
183
|
request: {
|
|
148
|
-
params: (_a = ctx.request) == null ? void 0 : _a.params,
|
|
149
184
|
body: {
|
|
150
|
-
...(
|
|
185
|
+
...(_a = ctx.request) == null ? void 0 : _a.body,
|
|
151
186
|
password: void 0
|
|
152
|
-
},
|
|
153
|
-
path: (_c = ctx.request) == null ? void 0 : _c.path,
|
|
154
|
-
headers: {
|
|
155
|
-
"x-authenticator": (_d = ctx.request) == null ? void 0 : _d.headers["x-authenticator"],
|
|
156
|
-
"x-locale": (_e = ctx.request) == null ? void 0 : _e.headers["x-locale"],
|
|
157
|
-
"x-timezone": (_f = ctx.request) == null ? void 0 : _f.headers["x-timezone"]
|
|
158
187
|
}
|
|
159
|
-
},
|
|
160
|
-
response: {
|
|
161
|
-
body
|
|
162
188
|
}
|
|
163
189
|
};
|
|
164
190
|
},
|
|
@@ -193,26 +219,13 @@ class PluginAuthServer extends import_server.Plugin {
|
|
|
193
219
|
{
|
|
194
220
|
name: "auth:signUp",
|
|
195
221
|
getMetaData: async (ctx) => {
|
|
196
|
-
var _a
|
|
222
|
+
var _a;
|
|
197
223
|
return {
|
|
198
224
|
request: {
|
|
199
|
-
params: (_a = ctx.request) == null ? void 0 : _a.params,
|
|
200
225
|
body: {
|
|
201
|
-
...(
|
|
226
|
+
...(_a = ctx.request) == null ? void 0 : _a.body,
|
|
202
227
|
password: void 0,
|
|
203
228
|
confirm_password: void 0
|
|
204
|
-
},
|
|
205
|
-
path: (_c = ctx.request) == null ? void 0 : _c.path,
|
|
206
|
-
headers: {
|
|
207
|
-
"x-authenticator": (_d = ctx.request) == null ? void 0 : _d.headers["x-authenticator"],
|
|
208
|
-
"x-locale": (_e = ctx.request) == null ? void 0 : _e.headers["x-locale"],
|
|
209
|
-
"x-timezone": (_f = ctx.request) == null ? void 0 : _f.headers["x-timezone"]
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
response: {
|
|
213
|
-
body: {
|
|
214
|
-
...(_g = ctx.response) == null ? void 0 : _g.body,
|
|
215
|
-
token: void 0
|
|
216
229
|
}
|
|
217
230
|
}
|
|
218
231
|
};
|
|
@@ -221,18 +234,9 @@ class PluginAuthServer extends import_server.Plugin {
|
|
|
221
234
|
{
|
|
222
235
|
name: "auth:changePassword",
|
|
223
236
|
getMetaData: async (ctx) => {
|
|
224
|
-
var _a, _b, _c;
|
|
225
237
|
return {
|
|
226
238
|
request: {
|
|
227
|
-
|
|
228
|
-
query: ctx.request.query,
|
|
229
|
-
body: {},
|
|
230
|
-
path: ctx.request.path,
|
|
231
|
-
headers: {
|
|
232
|
-
"x-authenticator": (_a = ctx.request) == null ? void 0 : _a.headers["x-authenticator"],
|
|
233
|
-
"x-locale": (_b = ctx.request) == null ? void 0 : _b.headers["x-locale"],
|
|
234
|
-
"x-timezone": (_c = ctx.request) == null ? void 0 : _c.headers["x-timezone"]
|
|
235
|
-
}
|
|
239
|
+
body: {}
|
|
236
240
|
},
|
|
237
241
|
response: {
|
|
238
242
|
body: {}
|
package/dist/server/storer.d.ts
CHANGED
|
@@ -6,18 +6,24 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { Storer as IStorer } from '@nocobase/auth';
|
|
9
|
+
import { AuthManager, Storer as IStorer } from '@nocobase/auth';
|
|
10
10
|
import { Cache } from '@nocobase/cache';
|
|
11
11
|
import { Database } from '@nocobase/database';
|
|
12
|
+
import { Application } from '@nocobase/server';
|
|
12
13
|
import { AuthModel } from './model/authenticator';
|
|
13
14
|
export declare class Storer implements IStorer {
|
|
14
15
|
db: Database;
|
|
15
16
|
cache: Cache;
|
|
17
|
+
app: Application;
|
|
18
|
+
authManager: AuthManager;
|
|
16
19
|
key: string;
|
|
17
|
-
constructor({ db, cache }: {
|
|
20
|
+
constructor({ app, db, cache, authManager, }: {
|
|
21
|
+
app?: Application;
|
|
18
22
|
db: Database;
|
|
19
23
|
cache: Cache;
|
|
24
|
+
authManager: AuthManager;
|
|
20
25
|
});
|
|
26
|
+
renderJsonTemplate(authenticator: any): any;
|
|
21
27
|
getCache(): Promise<AuthModel[]>;
|
|
22
28
|
setCache(authenticators: AuthModel[]): Promise<void>;
|
|
23
29
|
get(name: string): Promise<AuthModel>;
|
package/dist/server/storer.js
CHANGED
|
@@ -32,21 +32,45 @@ module.exports = __toCommonJS(storer_exports);
|
|
|
32
32
|
class Storer {
|
|
33
33
|
db;
|
|
34
34
|
cache;
|
|
35
|
+
app;
|
|
36
|
+
authManager;
|
|
35
37
|
key = "authenticators";
|
|
36
|
-
constructor({
|
|
38
|
+
constructor({
|
|
39
|
+
app,
|
|
40
|
+
db,
|
|
41
|
+
cache,
|
|
42
|
+
authManager
|
|
43
|
+
}) {
|
|
44
|
+
this.app = app;
|
|
37
45
|
this.db = db;
|
|
38
46
|
this.cache = cache;
|
|
47
|
+
this.authManager = authManager;
|
|
39
48
|
this.db.on("authenticators.afterSave", async (model) => {
|
|
40
49
|
if (!model.enabled) {
|
|
41
50
|
await this.cache.delValueInObject(this.key, model.name);
|
|
42
51
|
return;
|
|
43
52
|
}
|
|
44
|
-
await this.cache.setValueInObject(this.key, model.name, model);
|
|
53
|
+
await this.cache.setValueInObject(this.key, model.name, this.renderJsonTemplate(model));
|
|
45
54
|
});
|
|
46
55
|
this.db.on("authenticators.afterDestroy", async (model) => {
|
|
47
56
|
await this.cache.delValueInObject(this.key, model.name);
|
|
48
57
|
});
|
|
49
58
|
}
|
|
59
|
+
renderJsonTemplate(authenticator) {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
if (!authenticator) {
|
|
62
|
+
return authenticator;
|
|
63
|
+
}
|
|
64
|
+
const $env = (_a = this.app) == null ? void 0 : _a.environment;
|
|
65
|
+
if (!$env) {
|
|
66
|
+
return authenticator;
|
|
67
|
+
}
|
|
68
|
+
const config = this.authManager.getAuthConfig(authenticator.authType);
|
|
69
|
+
authenticator.dataValues.options = $env.renderJsonTemplate(authenticator.dataValues.options, {
|
|
70
|
+
omit: (_b = config == null ? void 0 : config.auth) == null ? void 0 : _b["optionsKeysNotAllowedInEnv"]
|
|
71
|
+
});
|
|
72
|
+
return authenticator;
|
|
73
|
+
}
|
|
50
74
|
async getCache() {
|
|
51
75
|
const authenticators = await this.cache.get(this.key);
|
|
52
76
|
if (!authenticators) {
|
|
@@ -56,7 +80,7 @@ class Storer {
|
|
|
56
80
|
}
|
|
57
81
|
async setCache(authenticators) {
|
|
58
82
|
const obj = authenticators.reduce((obj2, authenticator) => {
|
|
59
|
-
obj2[authenticator.name] = authenticator;
|
|
83
|
+
obj2[authenticator.name] = this.renderJsonTemplate(authenticator);
|
|
60
84
|
return obj2;
|
|
61
85
|
}, {});
|
|
62
86
|
await this.cache.set(this.key, obj);
|
|
@@ -67,6 +91,7 @@ class Storer {
|
|
|
67
91
|
const repo = this.db.getRepository("authenticators");
|
|
68
92
|
authenticators = await repo.find({ filter: { enabled: true } });
|
|
69
93
|
await this.setCache(authenticators);
|
|
94
|
+
authenticators = await this.getCache();
|
|
70
95
|
}
|
|
71
96
|
const authenticator = authenticators.find((authenticator2) => authenticator2.name === name);
|
|
72
97
|
return authenticator || authenticators[0];
|
|
@@ -37,11 +37,22 @@ class TokenBlacklistService {
|
|
|
37
37
|
try {
|
|
38
38
|
this.bloomFilter = await plugin.app.cacheManager.createBloomFilter();
|
|
39
39
|
await this.bloomFilter.reserve(this.cacheKey, 1e-3, 1e6);
|
|
40
|
-
const data = await this.repo.find({
|
|
40
|
+
const data = await this.repo.find({
|
|
41
|
+
fields: ["token"],
|
|
42
|
+
filter: {
|
|
43
|
+
expiration: {
|
|
44
|
+
$dateAfter: /* @__PURE__ */ new Date()
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
raw: true
|
|
48
|
+
});
|
|
41
49
|
const tokens = data.map((item) => item.token);
|
|
50
|
+
if (!tokens.length) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
42
53
|
await this.bloomFilter.mAdd(this.cacheKey, tokens);
|
|
43
54
|
} catch (error) {
|
|
44
|
-
plugin.app.logger.
|
|
55
|
+
plugin.app.logger.warn("token-blacklist: create bloom filter failed", error);
|
|
45
56
|
this.bloomFilter = null;
|
|
46
57
|
}
|
|
47
58
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-auth",
|
|
3
|
-
"version": "1.6.0-alpha.
|
|
3
|
+
"version": "1.6.0-alpha.11",
|
|
4
4
|
"main": "./dist/server/index.js",
|
|
5
5
|
"homepage": "https://docs.nocobase.com/handbook/auth",
|
|
6
6
|
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"displayName.zh-CN": "用户认证",
|
|
27
27
|
"description": "User authentication management, including password, SMS, and support for Single Sign-On (SSO) protocols, with extensibility.",
|
|
28
28
|
"description.zh-CN": "用户认证管理,包括基础的密码认证、短信认证、SSO 协议的认证等,可扩展。",
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "2a07f8a9af90b3ce09229cae72a485c14df2361b",
|
|
30
30
|
"keywords": [
|
|
31
31
|
"Authentication"
|
|
32
32
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|