From 5503050c0e20259bf6646fdda82885d0a7b07610 Mon Sep 17 00:00:00 2001 From: wenjiarui Date: Wed, 6 Dec 2023 19:24:30 +0800 Subject: [PATCH] =?UTF-8?q?loginbymobile=E6=94=AF=E6=8C=81=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=B0=81=E9=97=AD=E7=9B=B4=E6=8E=A5=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- es/aspects/AspectDict.d.ts | 1 + es/aspects/token.d.ts | 1 + es/aspects/token.js | 16 ++++++++++++++ es/checkers/index.d.ts | 2 +- .../config/style/platform/index.d.ts | 2 +- es/components/extraFile/commit/index.d.ts | 2 +- es/components/wechatLogin/qrCode/index.d.ts | 2 +- es/features/token.d.ts | 2 +- es/features/token.js | 3 ++- es/triggers/index.d.ts | 2 +- es/triggers/toDo.d.ts | 2 +- lib/aspects/AspectDict.d.ts | 1 + lib/aspects/token.d.ts | 1 + lib/aspects/token.js | 16 ++++++++++++++ lib/checkers/index.d.ts | 2 +- lib/features/token.d.ts | 2 +- lib/features/token.js | 3 ++- lib/triggers/index.d.ts | 2 +- lib/triggers/toDo.d.ts | 2 +- src/aspects/AspectDict.ts | 1 + src/aspects/token.ts | 22 ++++++++++++++++++- src/components/user/login/index.ts | 8 +++---- src/features/token.ts | 5 +++-- 23 files changed, 80 insertions(+), 20 deletions(-) diff --git a/es/aspects/AspectDict.d.ts b/es/aspects/AspectDict.d.ts index 1384c357f..0f917597f 100644 --- a/es/aspects/AspectDict.d.ts +++ b/es/aspects/AspectDict.d.ts @@ -20,6 +20,7 @@ export type GeneralAspectDict Promise; loginWechat: ({ code, env, wechatLoginId, }: { diff --git a/es/aspects/token.d.ts b/es/aspects/token.d.ts index 397aa183d..fa2d481a3 100644 --- a/es/aspects/token.d.ts +++ b/es/aspects/token.d.ts @@ -5,6 +5,7 @@ export declare function loginByMobile; export declare function refreshWechatPublicUserInfo>({}: {}, context: Cxt): Promise; diff --git a/es/aspects/token.js b/es/aspects/token.js index fcbf152bf..cd5359091 100644 --- a/es/aspects/token.js +++ b/es/aspects/token.js @@ -496,6 +496,22 @@ export async function loginByMobile(params, context) { } }; const closeRootMode = context.openRootMode(); + if (params?.disableRegist) { + const [existMobile] = await context.select('mobile', { + data: { + id: 1, + mobile: 1, + }, + filter: { + mobile: params.mobile, + ableState: 'enabled', + }, + }, { dontCollect: true }); + if (!existMobile) { + closeRootMode(); + throw new OakUserException('手机号无效,请先联系管理员获取权限'); + } + } const tokenId = await loginLogic(); await loadTokenInfo(tokenId, context); closeRootMode(); diff --git a/es/checkers/index.d.ts b/es/checkers/index.d.ts index 46b6c8266..1c141fe16 100644 --- a/es/checkers/index.d.ts +++ b/es/checkers/index.d.ts @@ -1,2 +1,2 @@ -declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; +declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; export default checkers; diff --git a/es/components/config/style/platform/index.d.ts b/es/components/config/style/platform/index.d.ts index 0bf145940..bd3579c54 100644 --- a/es/components/config/style/platform/index.d.ts +++ b/es/components/config/style/platform/index.d.ts @@ -1,7 +1,7 @@ import { Style } from '../../../../types/Style'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; diff --git a/es/components/extraFile/commit/index.d.ts b/es/components/extraFile/commit/index.d.ts index c1b76bf51..dbf84b41c 100644 --- a/es/components/extraFile/commit/index.d.ts +++ b/es/components/extraFile/commit/index.d.ts @@ -12,7 +12,7 @@ declare const _default: ) => import("react").ReactElement>; export default _default; diff --git a/es/features/token.d.ts b/es/features/token.d.ts index 69c76f7ab..143fb4bd1 100644 --- a/es/features/token.d.ts +++ b/es/features/token.d.ts @@ -16,7 +16,7 @@ export declare class Token, storage: LocalStorage, environment: Environment); loadTokenInfo(): Promise; - loginByMobile(mobile: string, password?: string, captcha?: string): Promise; + loginByMobile(mobile: string, password?: string, captcha?: string, disableRegist?: boolean): Promise; loginByWechatInWebEnv(wechatLoginId: string): Promise; loginWechat(code: string, params?: { wechatLoginId?: string; diff --git a/es/features/token.js b/es/features/token.js index f3712c396..db66f5084 100644 --- a/es/features/token.js +++ b/es/features/token.js @@ -50,12 +50,13 @@ export class Token extends Feature { this.isLoading = false; } } - async loginByMobile(mobile, password, captcha) { + async loginByMobile(mobile, password, captcha, disableRegist) { const env = await this.environment.getEnv(); const { result } = await this.cache.exec('loginByMobile', { password, mobile, captcha, + disableRegist, env, }); this.tokenValue = result; diff --git a/es/triggers/index.d.ts b/es/triggers/index.d.ts index 6fb3c0b29..0770eae70 100644 --- a/es/triggers/index.d.ts +++ b/es/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/es/triggers/toDo.d.ts b/es/triggers/toDo.d.ts index 95d028df6..3c8646ad8 100644 --- a/es/triggers/toDo.d.ts +++ b/es/triggers/toDo.d.ts @@ -12,7 +12,7 @@ export declare function createToDo; +}, userIds?: string[]): Promise<0 | 1>; /** * 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成 * 必须在entity的action的后trigger中调用 diff --git a/lib/aspects/AspectDict.d.ts b/lib/aspects/AspectDict.d.ts index 1384c357f..0f917597f 100644 --- a/lib/aspects/AspectDict.d.ts +++ b/lib/aspects/AspectDict.d.ts @@ -20,6 +20,7 @@ export type GeneralAspectDict Promise; loginWechat: ({ code, env, wechatLoginId, }: { diff --git a/lib/aspects/token.d.ts b/lib/aspects/token.d.ts index 397aa183d..fa2d481a3 100644 --- a/lib/aspects/token.d.ts +++ b/lib/aspects/token.d.ts @@ -5,6 +5,7 @@ export declare function loginByMobile; export declare function refreshWechatPublicUserInfo>({}: {}, context: Cxt): Promise; diff --git a/lib/aspects/token.js b/lib/aspects/token.js index b11d7f862..d9a8c807f 100644 --- a/lib/aspects/token.js +++ b/lib/aspects/token.js @@ -499,6 +499,22 @@ async function loginByMobile(params, context) { } }; const closeRootMode = context.openRootMode(); + if (params?.disableRegist) { + const [existMobile] = await context.select('mobile', { + data: { + id: 1, + mobile: 1, + }, + filter: { + mobile: params.mobile, + ableState: 'enabled', + }, + }, { dontCollect: true }); + if (!existMobile) { + closeRootMode(); + throw new types_1.OakUserException('手机号无效,请先联系管理员获取权限'); + } + } const tokenId = await loginLogic(); await loadTokenInfo(tokenId, context); closeRootMode(); diff --git a/lib/checkers/index.d.ts b/lib/checkers/index.d.ts index 46b6c8266..1c141fe16 100644 --- a/lib/checkers/index.d.ts +++ b/lib/checkers/index.d.ts @@ -1,2 +1,2 @@ -declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; +declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; export default checkers; diff --git a/lib/features/token.d.ts b/lib/features/token.d.ts index 69c76f7ab..143fb4bd1 100644 --- a/lib/features/token.d.ts +++ b/lib/features/token.d.ts @@ -16,7 +16,7 @@ export declare class Token, storage: LocalStorage, environment: Environment); loadTokenInfo(): Promise; - loginByMobile(mobile: string, password?: string, captcha?: string): Promise; + loginByMobile(mobile: string, password?: string, captcha?: string, disableRegist?: boolean): Promise; loginByWechatInWebEnv(wechatLoginId: string): Promise; loginWechat(code: string, params?: { wechatLoginId?: string; diff --git a/lib/features/token.js b/lib/features/token.js index d6100afc0..7135d9010 100644 --- a/lib/features/token.js +++ b/lib/features/token.js @@ -53,12 +53,13 @@ class Token extends oak_frontend_base_1.Feature { this.isLoading = false; } } - async loginByMobile(mobile, password, captcha) { + async loginByMobile(mobile, password, captcha, disableRegist) { const env = await this.environment.getEnv(); const { result } = await this.cache.exec('loginByMobile', { password, mobile, captcha, + disableRegist, env, }); this.tokenValue = result; diff --git a/lib/triggers/index.d.ts b/lib/triggers/index.d.ts index 6fb3c0b29..0770eae70 100644 --- a/lib/triggers/index.d.ts +++ b/lib/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/lib/triggers/toDo.d.ts b/lib/triggers/toDo.d.ts index 95d028df6..3c8646ad8 100644 --- a/lib/triggers/toDo.d.ts +++ b/lib/triggers/toDo.d.ts @@ -12,7 +12,7 @@ export declare function createToDo; +}, userIds?: string[]): Promise<0 | 1>; /** * 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成 * 必须在entity的action的后trigger中调用 diff --git a/src/aspects/AspectDict.ts b/src/aspects/AspectDict.ts index 06372292d..2b89c0345 100644 --- a/src/aspects/AspectDict.ts +++ b/src/aspects/AspectDict.ts @@ -26,6 +26,7 @@ export type GeneralAspectDict< captcha?: string; password?: string; mobile: string; + disableRegist?: boolean; env: WebEnv | WechatMpEnv | NativeEnv; }, context: Cxt diff --git a/src/aspects/token.ts b/src/aspects/token.ts index 8b12bd9d3..dad46fa38 100644 --- a/src/aspects/token.ts +++ b/src/aspects/token.ts @@ -590,6 +590,7 @@ export async function loginByMobile< captcha?: string; password?: string; mobile: string; + disableRegist?: boolean; env: WebEnv | WechatMpEnv | NativeEnv; }, context: Cxt @@ -690,8 +691,27 @@ export async function loginByMobile< } } }; - const closeRootMode = context.openRootMode(); + if (params?.disableRegist) { + const [existMobile] = await context.select( + 'mobile', + { + data: { + id: 1, + mobile: 1, + }, + filter: { + mobile: params.mobile!, + ableState: 'enabled', + }, + }, + { dontCollect: true } + ); + if (!existMobile) { + closeRootMode(); + throw new OakUserException('手机号无效,请先联系管理员获取权限'); + } + } const tokenId = await loginLogic(); await loadTokenInfo(tokenId, context); closeRootMode(); diff --git a/src/components/user/login/index.ts b/src/components/user/login/index.ts index 1abff56d1..8e66db898 100644 --- a/src/components/user/login/index.ts +++ b/src/components/user/login/index.ts @@ -68,7 +68,7 @@ export default OakComponent({ }, async ready() { const application = this.features.application.getApplication(); - + let loginMode = await this.load(LOGIN_MODE) || 2; const lastSendAt = await this.load(SEND_KEY); @@ -94,7 +94,7 @@ export default OakComponent({ isSupportWechat = !!config2?.passport?.includes('wechat'); isSupportWechatPublic = !!config2?.passport?.includes('wechatPublic') //是否开启 } - + if (isSupportGrant) { loginMode = 1; } else if (this.props.onlyPassword) { @@ -143,7 +143,7 @@ export default OakComponent({ captcha?: string ) { const { url } = this.props; - + try { this.setState({ loading: true, @@ -151,7 +151,7 @@ export default OakComponent({ await this.features.token.loginByMobile( mobile, password, - captcha + captcha, ); this.setState({ loading: false, diff --git a/src/features/token.ts b/src/features/token.ts index 69726f3c5..2de4b2aa7 100644 --- a/src/features/token.ts +++ b/src/features/token.ts @@ -40,7 +40,7 @@ export class Token< await this.storage.remove('token:token'); } } - + if (tokenValue) { this.tokenValue = tokenValue; // this.loadTokenInfo(); @@ -74,12 +74,13 @@ export class Token< } } - async loginByMobile(mobile: string, password?: string, captcha?: string) { + async loginByMobile(mobile: string, password?: string, captcha?: string, disableRegist?: boolean) { const env = await this.environment.getEnv(); const { result } = await this.cache.exec('loginByMobile', { password, mobile, captcha, + disableRegist, env, }); this.tokenValue = result;