@nocobase/plugin-auth-sms 1.7.0-beta.8 → 1.7.0

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.
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("@nocobase/plugin-auth/client"),require("@formily/react"),require("@nocobase/client"),require("react"),require("antd")):"function"==typeof define&&define.amd?define("@nocobase/plugin-auth-sms",["react-i18next","@nocobase/plugin-auth/client","@formily/react","@nocobase/client","react","antd"],t):"object"==typeof exports?exports["@nocobase/plugin-auth-sms"]=t(require("react-i18next"),require("@nocobase/plugin-auth/client"),require("@formily/react"),require("@nocobase/client"),require("react"),require("antd")):e["@nocobase/plugin-auth-sms"]=t(e["react-i18next"],e["@nocobase/plugin-auth/client"],e["@formily/react"],e["@nocobase/client"],e.react,e.antd)}(self,function(e,t,n,r,o,i){return function(){"use strict";var u={505:function(e){e.exports=n},772:function(e){e.exports=r},689:function(e){e.exports=t},721:function(e){e.exports=i},156:function(e){e.exports=o},238:function(t){t.exports=e}},c={};function a(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return u[e](n,n.exports,a),n.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};a.r(l),a.d(l,{PluginAuthSMSClient:function(){return C},default:function(){return F}});var s=a("772"),p=a("689"),f=a.n(p),y=a("156"),b=a.n(y),d=a("505"),h=a("721"),m=a("238");function v(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 g(e,t,n,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,o)}function x(){var e,t,n=(e=["\n display: flex;\n gap: 0.5em;\n "],!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return x=function(){return n},n}function S(e){var t,n,r=e.targetFieldName,o=void 0===r?"phone":r,i=e.actionType,u=e.value,c=e.onChange,a=(0,m.useTranslation)().t,l=(0,s.useAPIClient)(),p=(0,d.useForm)();var f=(t=(0,y.useState)(0),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],u=!0,c=!1;try{for(o=o.call(e);!(u=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){c=!0,r=e}finally{try{!u&&null!=o.return&&o.return()}finally{if(c)throw r}}return i}}(t,2)||function(e,t){if(e){if("string"==typeof e)return v(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 v(e,t)}}(t,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),S=f[0],w=f[1],j=(0,y.useRef)(null);(0,y.useEffect)(function(){S<=0&&j.current&&clearInterval(j.current)},[S]);function O(){var e;return e=function(){var e;return function(e,t){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=t.call(e,u)}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,c])}}}(this,function(t){switch(t.label){case 0:if(S>0)return[2];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,l.resource("verifications").create({values:{type:i,phone:p.values[o]}})];case 2:return e=t.sent().data.data,h.message.success(a("Operation succeeded")),u&&c(""),w(e.expiresAt?Math.ceil((Date.parse(e.expiresAt)-Date.now())/1e3):60),j.current=setInterval(function(){w(function(e){return e-1})},1e3),[3,4];case 3:return console.error(t.sent()),[3,4];case 4:return[2]}})},(O=function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){g(i,r,o,u,c,"next",e)}function c(e){g(i,r,o,u,c,"throw",e)}u(void 0)})}).apply(this,arguments)}return b().createElement("fieldset",{className:(0,s.css)(x())},b().createElement(h.Input,{value:u,onChange:c,placeholder:a("Verification code")}),b().createElement(h.Button,{onClick:function(){return O.apply(this,arguments)},disabled:S>0},S>0?a("Retry after {{count}} seconds",{count:S}):a("Send code")))}var w={type:"object",name:"phoneForm","x-component":"Form",properties:{phone:{type:"string",required:!0,"x-component":"Input","x-validator":"phone","x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Phone")}}',style:{}}},code:{type:"string",required:!0,"x-component":"VerificationCode","x-component-props":{actionType:"auth:signIn",targetFieldName:"phone"},"x-decorator":"FormItem"},actions:{title:'{{t("Sign in")}}',type:"void","x-component":"Action","x-component-props":{htmlType:"submit",block:!0,type:"primary",useAction:"{{ useSMSSignIn }}",style:{width:"100%"}}},tip:{type:"void","x-component":"div","x-content":'{{t("User will be registered automatically if not exists.", {ns: "auth-sms"})}}',"x-component-props":{style:{color:"#ccc"}},"x-visible":"{{ autoSignup }}"}}},j=function(e){var t=e.authenticator,n=t.name,r=t.options,o=!!(null==r?void 0:r.autoSignup);return b().createElement(s.SchemaComponent,{schema:w,scope:{useSMSSignIn:function(){return(0,p.useSignIn)(n)},autoSignup:o},components:{VerificationCode:S}})},O=function(){var e=(0,m.useTranslation)("auth-sms").t;return b().createElement(s.SchemaComponent,{scope:{t:e},schema:{type:"object",properties:{sms:{type:"void",properties:{public:{type:"object",properties:{autoSignup:{"x-decorator":"FormItem",type:"boolean",title:'{{t("Sign up automatically when the user does not exist")}}',"x-component":"Checkbox"}}}}}}}})};function P(e,t,n,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,o)}function I(e,t,n){return(I=E()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&k(o,n.prototype),o}).apply(null,arguments)}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function T(e){return(T=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function k(e,t){return(k=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function A(e){var t="function"==typeof Map?new Map:void 0;return(A=function(e){var n;if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return I(e,arguments,T(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),k(r,e)})(e)}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(E=function(){return!!e})()}var C=function(e){var t,n,r;function o(){var e,t,n;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,o),e=this,t=o,n=arguments,t=T(t),function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,E()?Reflect.construct(t,n||[],T(e).constructor):t.apply(e,n))}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&k(e,t)}(o,e),t=o,n=[{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){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=t.call(e,u)}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,c])}}}(this,function(e){return t.app.pm.get(f()).registerType("SMS",{components:{SignInForm:j,AdminSettingsForm:O}}),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){P(i,r,o,u,c,"next",e)}function c(e){P(i,r,o,u,c,"throw",e)}u(void 0)})})()}}],q(t.prototype,n),o}(A(s.Plugin)),F=C;return l}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-i18next"),require("@formily/react"),require("@nocobase/plugin-auth/client"),require("@nocobase/client"),require("@nocobase/plugin-verification/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-auth-sms",["react","react-i18next","@formily/react","@nocobase/plugin-auth/client","@nocobase/client","@nocobase/plugin-verification/client"],t):"object"==typeof exports?exports["@nocobase/plugin-auth-sms"]=t(require("react"),require("react-i18next"),require("@formily/react"),require("@nocobase/plugin-auth/client"),require("@nocobase/client"),require("@nocobase/plugin-verification/client")):e["@nocobase/plugin-auth-sms"]=t(e.react,e["react-i18next"],e["@formily/react"],e["@nocobase/plugin-auth/client"],e["@nocobase/client"],e["@nocobase/plugin-verification/client"])}(self,function(e,t,n,r,o,i){return function(){"use strict";var u={505:function(e){e.exports=n},772:function(e){e.exports=o},689:function(e){e.exports=r},697:function(e){e.exports=i},156:function(t){t.exports=e},238:function(e){e.exports=t}},c={};function a(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return u[e](n,n.exports,a),n.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return!function(){a.r(l),a.d(l,{PluginAuthSMSClient:function(){return w},default:function(){return P}});var e=a(772),t=a(689),n=a.n(t),r=a(505),o=a(156),i=a.n(o),u=a(697),c=a(238);function s(){return(0,c.useTranslation)(["auth-sms","client"],{nsMode:"fallback"})}function p(e,t,n,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,o)}var f={type:"object",name:"phoneForm","x-component":"FormV2",properties:{form:{type:"void","x-component":"VerificationForm","x-component-props":{actionType:"auth:signIn",verifier:"{{ verifier }}"}},actions:{type:"void",title:'{{t("Sign in")}}',"x-component":"Action","x-use-component-props":"useVerifyActionProps","x-component-props":{htmlType:"submit",block:!0,type:"primary",style:{width:"100%"}}},tip:{type:"void","x-component":"div","x-content":'{{t("User will be registered automatically if not exists.", {ns: "auth-sms"})}}',"x-component-props":{style:{color:"#ccc"}},"x-visible":"{{ autoSignup }}"}}},y=function(n){var o=(0,r.useForm)(),i=(0,e.useAPIClient)(),u=(0,t.useRedirect)(),c=(0,e.useCurrentUserContext)().refreshAsync;return{title:(0,s().t)("Sign in"),onClick:function(){var e;return(e=function(){return function(e,t){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){var a=[i,c];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,r=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=t.call(e,u)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}}}(this,function(e){switch(e.label){case 0:return[4,o.submit()];case 1:return e.sent(),[4,i.auth.signIn(o.values,n)];case 2:return e.sent(),[4,c()];case 3:return e.sent(),u(),[2]}})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){p(i,r,o,u,c,"next",e)}function c(e){p(i,r,o,u,c,"throw",e)}u(void 0)})})()}}},b=function(t){var n=t.authenticator,r=n.name,o=n.options,c=!!(null==o?void 0:o.autoSignup),a=(0,e.usePlugin)("verification").verificationManager.getVerification(u.SMS_OTP_VERIFICATION_TYPE),l=null==a?void 0:a.components.VerificationForm;return i().createElement(e.SchemaComponent,{schema:f,scope:{useVerifyActionProps:function(){return y(r)},autoSignup:c,verifier:null==o?void 0:o.verifier},components:{VerificationForm:l}})},v=function(){var t=s().t;return i().createElement(e.SchemaComponent,{scope:{t:t},schema:{type:"object",properties:{sms:{type:"void",properties:{public:{type:"object",properties:{verifier:{type:"string","x-component":"VerifierSelect","x-component-props":{title:'{{t("Verifier")}}',scene:"auth-sms"}},autoSignup:{"x-decorator":"FormItem",type:"boolean",title:'{{t("Sign up automatically when the user does not exist")}}',"x-component":"Checkbox"}}}}}}}})};function h(e,t,n,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,o)}function m(e,t,n){return(m=S()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&g(o,n.prototype),o}).apply(null,arguments)}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function x(e){var t="function"==typeof Map?new Map:void 0;return(x=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return m(e,arguments,d(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)})(e)}function S(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(S=function(){return!!e})()}var w=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=d(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,S()?Reflect.construct(e,t||[],d(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&g(r,e),t=[{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){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){var a=[i,c];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,r=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=t.call(e,u)}catch(e){a=[6,e],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}}}(this,function(e){return t.app.pm.get(n()).registerType("SMS",{components:{SignInForm:b,AdminSettingsForm:v}}),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){h(i,r,o,u,c,"next",e)}function c(e){h(i,r,o,u,c,"throw",e)}u(void 0)})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(r.prototype,t),r}(x(e.Plugin)),P=w}(),l}()});
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  export declare const NAMESPACE = "auth-sms";
10
- export declare function useAuthTranslation(): import("react-i18next").UseTranslationResponse<"auth-sms", undefined>;
10
+ export declare function useAuthTranslation(): import("react-i18next").UseTranslationResponse<("auth-sms" | "client")[], undefined>;
@@ -8,15 +8,15 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "1.7.0-beta.8",
11
+ "@nocobase/client": "1.7.0",
12
12
  "react": "18.2.0",
13
13
  "@formily/react": "2.3.0",
14
- "@nocobase/plugin-auth": "1.7.0-beta.8",
15
- "antd": "5.12.8",
14
+ "@nocobase/plugin-auth": "1.7.0",
15
+ "@nocobase/plugin-verification": "1.7.0",
16
+ "@nocobase/server": "1.7.0",
17
+ "@nocobase/utils": "1.7.0",
18
+ "@nocobase/auth": "1.7.0",
19
+ "@nocobase/database": "1.7.0",
16
20
  "react-i18next": "11.18.6",
17
- "@nocobase/plugin-verification": "1.7.0-beta.8",
18
- "@nocobase/server": "1.7.0-beta.8",
19
- "@nocobase/utils": "1.7.0-beta.8",
20
- "@nocobase/auth": "1.7.0-beta.8",
21
- "@nocobase/database": "1.7.0-beta.8"
21
+ "lodash": "4.17.21"
22
22
  };
@@ -2,5 +2,6 @@
2
2
  "Sign in via SMS": "Sign in via SMS",
3
3
  "User will be registered automatically if not exists.": "User will be registered automatically if not exists.",
4
4
  "Sign up automatically when the user does not exist": "Sign up automatically when the user does not exist",
5
- "SMS": "SMS"
5
+ "SMS": "SMS",
6
+ "Verifier": "Verifier"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "Sign in via SMS": "短信登录",
3
3
  "User will be registered automatically if not exists.": "用户不存在时将自动注册。",
4
4
  "Sign up automatically when the user does not exist": "用户不存在时自动注册",
5
- "SMS": "短信"
5
+ "SMS": "短信",
6
+ "Verifier": "验证器"
6
7
  }
@@ -6,10 +6,9 @@
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 React from 'react';
10
- export default function VerificationCode({ targetFieldName, actionType, value, onChange }: {
11
- targetFieldName?: string;
12
- actionType: any;
13
- value: any;
14
- onChange: any;
15
- }): React.JSX.Element;
9
+ import { Migration } from '@nocobase/server';
10
+ export default class extends Migration {
11
+ on: string;
12
+ appVersion: string;
13
+ up(): Promise<void>;
14
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __export = (target, all) => {
17
+ for (var name in all)
18
+ __defProp(target, name, { get: all[name], enumerable: true });
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
+ // If the importer is in node compatibility mode or this is not an ESM
30
+ // file that has been converted to a CommonJS file using a Babel-
31
+ // compatible transform (i.e. "__esModule" has not been set), then set
32
+ // "default" to the CommonJS "module.exports" for node compatibility.
33
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
+ mod
35
+ ));
36
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
+ var fix_verifier_typo_exports = {};
38
+ __export(fix_verifier_typo_exports, {
39
+ default: () => fix_verifier_typo_default
40
+ });
41
+ module.exports = __toCommonJS(fix_verifier_typo_exports);
42
+ var import_server = require("@nocobase/server");
43
+ var import_lodash = __toESM(require("lodash"));
44
+ class fix_verifier_typo_default extends import_server.Migration {
45
+ on = "afterLoad";
46
+ // 'beforeLoad' or 'afterLoad'
47
+ appVersion = "<1.7.0";
48
+ async up() {
49
+ var _a, _b;
50
+ const authenticators = await this.db.getRepository("authenticators").find({
51
+ filter: {
52
+ authType: "SMS"
53
+ }
54
+ });
55
+ for (const authenticator of authenticators) {
56
+ if ((_b = (_a = authenticator.options) == null ? void 0 : _a.public) == null ? void 0 : _b.verificator) {
57
+ await authenticator.update({
58
+ options: {
59
+ ...authenticator.options,
60
+ public: {
61
+ ...import_lodash.default.omit(authenticator.options.public, ["verificator"]),
62
+ verifier: authenticator.options.public.verificator
63
+ }
64
+ }
65
+ });
66
+ }
67
+ }
68
+ }
69
+ }
@@ -43,17 +43,10 @@ class PluginAuthSMSServer extends import_server.Plugin {
43
43
  this.app.logger.warn("auth-sms: @nocobase/plugin-verification is required");
44
44
  return;
45
45
  }
46
- verificationPlugin.interceptors.register("auth:signIn", {
46
+ verificationPlugin.verificationManager.registerAction("auth:signIn", {
47
47
  manual: true,
48
- getReceiver: (ctx) => {
49
- return ctx.action.params.values.phone;
50
- },
51
- expiresIn: 120,
52
- validate: async (ctx, phone) => {
53
- if (!phone) {
54
- throw new Error(ctx.t("Not a valid cellphone number, please re-enter"));
55
- }
56
- return true;
48
+ getBoundInfoFromCtx: (ctx) => {
49
+ return ctx.action.params.values || {};
57
50
  }
58
51
  });
59
52
  this.app.authManager.registerTypes(import_constants.authType, {
@@ -40,16 +40,23 @@ class SMSAuth extends import_auth.BaseAuth {
40
40
  });
41
41
  }
42
42
  async validate() {
43
+ var _a;
43
44
  const ctx = this.ctx;
44
45
  const verificationPlugin = ctx.app.getPlugin("verification");
45
46
  if (!verificationPlugin) {
46
- throw new Error("auth-sms: @nocobase/plugin-verification is required");
47
+ ctx.log.error("auth-sms: @nocobase/plugin-verification is required", { method: "validate" });
48
+ ctx.throw(500);
47
49
  }
48
50
  let user;
49
- await verificationPlugin.intercept(ctx, async () => {
50
- var _a;
51
+ ctx.action.mergeParams({
52
+ values: {
53
+ verifier: (_a = this.options.public) == null ? void 0 : _a.verifier
54
+ }
55
+ });
56
+ await verificationPlugin.verificationManager.verify(ctx, async () => {
57
+ var _a2;
51
58
  const {
52
- values: { phone }
59
+ values: { uuid: phone }
53
60
  } = ctx.action.params;
54
61
  try {
55
62
  user = await this.userRepository.findOne({
@@ -63,7 +70,7 @@ class SMSAuth extends import_auth.BaseAuth {
63
70
  });
64
71
  return;
65
72
  }
66
- const { autoSignup } = ((_a = this.authenticator.options) == null ? void 0 : _a.public) || {};
73
+ const { autoSignup } = ((_a2 = this.authenticator.options) == null ? void 0 : _a2.public) || {};
67
74
  const authenticator = this.authenticator;
68
75
  if (autoSignup) {
69
76
  user = await authenticator.findOrCreateUser(phone, {
@@ -77,7 +84,7 @@ class SMSAuth extends import_auth.BaseAuth {
77
84
  throw new Error(ctx.t("The phone number is not registered, please register first", { ns: import_constants.namespace }));
78
85
  }
79
86
  } catch (err) {
80
- console.log(err);
87
+ ctx.log.error(err, { method: "validate" });
81
88
  throw new Error(err.message);
82
89
  }
83
90
  });
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "认证:短信",
5
5
  "description": "SMS authentication.",
6
6
  "description.zh-CN": "通过短信验证码认证身份。",
7
- "version": "1.7.0-beta.8",
7
+ "version": "1.7.0",
8
8
  "main": "./dist/server/index.js",
9
9
  "homepage": "https://docs.nocobase.com/handbook/auth-sms",
10
10
  "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth-sms",
@@ -25,7 +25,7 @@
25
25
  "@nocobase/server": "1.x",
26
26
  "@nocobase/test": "1.x"
27
27
  },
28
- "gitHead": "9ad35ee90db98d95dfa660645d155f4f4e81b47c",
28
+ "gitHead": "767ae089e404a104d718962272289c0bec01803a",
29
29
  "keywords": [
30
30
  "Authentication"
31
31
  ]