From 5cdbcb0e305d887eb27e9649db499e9f4eacf97f Mon Sep 17 00:00:00 2001 From: "Xc@centOs" Date: Fri, 26 Jan 2024 19:18:38 +0800 Subject: [PATCH] =?UTF-8?q?token=E4=B8=AD=E7=9A=84=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- es/aspects/token.js | 50 +++++++++++++------ es/aspects/wechatMpJump.js | 8 +++ es/checkers/index.d.ts | 2 +- .../config/style/platform/index.d.ts | 2 +- es/components/config/upsert/index.d.ts | 2 +- es/components/extraFile/commit/index.d.ts | 4 +- .../userEntityGrant/claim/ubPicker/index.d.ts | 4 +- .../userEntityGrant/upsert/index.d.ts | 4 +- .../upsert/byUserEntityGrant/web.pc.js | 2 +- es/components/wechatLogin/qrCode/index.d.ts | 2 +- es/data/userRole.js | 2 + es/triggers/index.d.ts | 2 +- lib/aspects/token.js | 50 +++++++++++++------ lib/checkers/index.d.ts | 2 +- lib/data/userRole.js | 2 +- lib/triggers/index.d.ts | 2 +- lib/triggers/toDo.d.ts | 2 +- src/aspects/token.ts | 23 ++++++++- 18 files changed, 119 insertions(+), 46 deletions(-) diff --git a/es/aspects/token.js b/es/aspects/token.js index e4633cefa..757a7ebad 100644 --- a/es/aspects/token.js +++ b/es/aspects/token.js @@ -224,25 +224,30 @@ createData, user) { } } else { - if (entityId) { + /* if (entityId) { // 已经有相应对象,判定一下能否重用上一次的token + // 不再重用了 const application = context.getApplication(); - const [originToken] = await context.select('token', { - data: { - id: 1, - value: 1, + const [originToken] = await context.select( + 'token', + { + data: { + id: 1, + value: 1, + }, + filter: { + applicationId: application!.id, + ableState: 'enabled', + entity, + entityId: entityId, + }, }, - filter: { - applicationId: application.id, - ableState: 'enabled', - entity, - entityId: entityId, - }, - }, { dontCollect: true }); + { dontCollect: true } + ); if (originToken) { - return originToken.value; + return originToken.value!; } - } + } */ const tokenData = { id: await generateNewIdAsync(), env, @@ -1306,6 +1311,23 @@ export async function wakeupParasite(params, context) { * @returns */ function checkTokenEnvConsistency(env1, env2) { + if (env1.type !== env2.type) { + return false; + } + switch (env1.type) { + case 'web': { + return env1.visitorId === env2.visitorId; + } + case 'wechatMp': { + return true; + } + case 'native': { + return env1.visitorId === env2.visitorId; + } + default: { + return false; + } + } return true; } export async function refreshToken(params, context) { diff --git a/es/aspects/wechatMpJump.js b/es/aspects/wechatMpJump.js index 13ef7eecd..e59a762bb 100644 --- a/es/aspects/wechatMpJump.js +++ b/es/aspects/wechatMpJump.js @@ -4,6 +4,14 @@ import { assert } from 'oak-domain/lib/utils/assert'; import { WechatSDK, } from 'oak-external-sdk'; export async function wechatMpJump(params, context) { const { applicationId, jump_wxa, expireType, expiresAt, expireInterval } = params; + const envVersionVersionDict = { + development: 'develop', + staging: 'trial', + production: 'release', + }; + Object.assign(jump_wxa, { + env_version: envVersionVersionDict[process.env.NODE_ENV], + }); assert(applicationId); const [application] = await context.select('application', { data: cloneDeep(applicationProjection), diff --git a/es/checkers/index.d.ts b/es/checkers/index.d.ts index 1c141fe16..46b6c8266 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 0017a6f93..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/config/upsert/index.d.ts b/es/components/config/upsert/index.d.ts index 26655e31f..6a8e95a3d 100644 --- a/es/components/config/upsert/index.d.ts +++ b/es/components/config/upsert/index.d.ts @@ -1,7 +1,7 @@ import { Config } from '../../../types/Config'; 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 e18ec3149..2be033b31 100644 --- a/es/components/extraFile/commit/index.d.ts +++ b/es/components/extraFile/commit/index.d.ts @@ -14,7 +14,7 @@ declare const _default: & import("react").ButtonHTMLAttributes, "id" | "onMouseDown" | "onMouseUp" | "onTouchStart" | "onTouchEnd"> & { + } & Pick & import("react").ButtonHTMLAttributes, "id" | "onMouseDown" | "onMouseUp" | "onTouchEnd" | "onTouchStart"> & { className?: string | undefined; style?: (import("react").CSSProperties & Partial>) | undefined; tabIndex?: number | undefined; diff --git a/es/components/userEntityGrant/claim/ubPicker/index.d.ts b/es/components/userEntityGrant/claim/ubPicker/index.d.ts index dbb7f06e5..b29d102ca 100644 --- a/es/components/userEntityGrant/claim/ubPicker/index.d.ts +++ b/es/components/userEntityGrant/claim/ubPicker/index.d.ts @@ -4,8 +4,8 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps< entity: keyof EntityDict; entityFilter: any; relationIds: string[]; - rule: "all" | "single" | "free"; - ruleOnRow: "all" | "single" | "free"; + rule: "single" | "all" | "free"; + ruleOnRow: "single" | "all" | "free"; onPickRelations: (ids: string[]) => void; onPickRows: (ids: string[]) => void; pickedRowIds: string[] | undefined; diff --git a/es/components/userEntityGrant/upsert/index.d.ts b/es/components/userEntityGrant/upsert/index.d.ts index 5f8ad2f06..960926763 100644 --- a/es/components/userEntityGrant/upsert/index.d.ts +++ b/es/components/userEntityGrant/upsert/index.d.ts @@ -11,7 +11,7 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps< claimUrl: string; qrCodeType: QrCodeType; multiple: boolean; - rule: "all" | "single" | "free"; - ruleOnRow: "all" | "single" | "free"; + rule: "single" | "all" | "free"; + ruleOnRow: "single" | "all" | "free"; }>) => import("react").ReactElement>; export default _default; diff --git a/es/components/userRelation/upsert/byUserEntityGrant/web.pc.js b/es/components/userRelation/upsert/byUserEntityGrant/web.pc.js index 15db8f1f5..72de83583 100644 --- a/es/components/userRelation/upsert/byUserEntityGrant/web.pc.js +++ b/es/components/userRelation/upsert/byUserEntityGrant/web.pc.js @@ -25,7 +25,7 @@ export default function render(props) { }} options={relations?.map((ele) => ({ value: ele.id, label: ele.display || - relationEntity && t(`${relationEntity}:r.${ele.name}`), + relationEntity && t(`${relationEntity}:r.${ele.name}`), }))}/> {relationIds?.length > 1 && ( diff --git a/es/components/wechatLogin/qrCode/index.d.ts b/es/components/wechatLogin/qrCode/index.d.ts index 8a45a21cf..69727bd4d 100644 --- a/es/components/wechatLogin/qrCode/index.d.ts +++ b/es/components/wechatLogin/qrCode/index.d.ts @@ -1,6 +1,6 @@ import { EntityDict } from '../../../oak-app-domain'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; export default _default; diff --git a/es/data/userRole.js b/es/data/userRole.js index 22b627bf3..01229571e 100644 --- a/es/data/userRole.js +++ b/es/data/userRole.js @@ -27,5 +27,7 @@ export const tokens = [ }, userId: ROOT_USER_ID, playerId: ROOT_USER_ID, + refreshedAt: Date.now(), + value: ROOT_TOKEN_ID, } ]; diff --git a/es/triggers/index.d.ts b/es/triggers/index.d.ts index 0770eae70..6fb3c0b29 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/lib/aspects/token.js b/lib/aspects/token.js index 7f73d6128..b9bd1ca12 100644 --- a/lib/aspects/token.js +++ b/lib/aspects/token.js @@ -227,25 +227,30 @@ createData, user) { } } else { - if (entityId) { + /* if (entityId) { // 已经有相应对象,判定一下能否重用上一次的token + // 不再重用了 const application = context.getApplication(); - const [originToken] = await context.select('token', { - data: { - id: 1, - value: 1, + const [originToken] = await context.select( + 'token', + { + data: { + id: 1, + value: 1, + }, + filter: { + applicationId: application!.id, + ableState: 'enabled', + entity, + entityId: entityId, + }, }, - filter: { - applicationId: application.id, - ableState: 'enabled', - entity, - entityId: entityId, - }, - }, { dontCollect: true }); + { dontCollect: true } + ); if (originToken) { - return originToken.value; + return originToken.value!; } - } + } */ const tokenData = { id: await (0, uuid_1.generateNewIdAsync)(), env, @@ -1320,6 +1325,23 @@ exports.wakeupParasite = wakeupParasite; * @returns */ function checkTokenEnvConsistency(env1, env2) { + if (env1.type !== env2.type) { + return false; + } + switch (env1.type) { + case 'web': { + return env1.visitorId === env2.visitorId; + } + case 'wechatMp': { + return true; + } + case 'native': { + return env1.visitorId === env2.visitorId; + } + default: { + return false; + } + } return true; } async function refreshToken(params, context) { diff --git a/lib/checkers/index.d.ts b/lib/checkers/index.d.ts index 1c141fe16..46b6c8266 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/data/userRole.js b/lib/data/userRole.js index 2a16757ab..7a1589768 100644 --- a/lib/data/userRole.js +++ b/lib/data/userRole.js @@ -31,6 +31,6 @@ exports.tokens = [ userId: constants_1.ROOT_USER_ID, playerId: constants_1.ROOT_USER_ID, refreshedAt: Date.now(), - value:constants_1.ROOT_TOKEN_ID, + value: constants_1.ROOT_TOKEN_ID, } ]; diff --git a/lib/triggers/index.d.ts b/lib/triggers/index.d.ts index 0770eae70..6fb3c0b29 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 6605371ec..c343874f5 100644 --- a/lib/triggers/toDo.d.ts +++ b/lib/triggers/toDo.d.ts @@ -14,7 +14,7 @@ export declare function createToDo; +}, userIds?: string[]): Promise<1 | 0>; /** * 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成 * 必须在entity的action的后trigger中调用 diff --git a/src/aspects/token.ts b/src/aspects/token.ts index 03cf74183..e69903b8f 100644 --- a/src/aspects/token.ts +++ b/src/aspects/token.ts @@ -328,8 +328,9 @@ async function setUpTokenAndUser< return currentToken.value!; } } else { - if (entityId) { + /* if (entityId) { // 已经有相应对象,判定一下能否重用上一次的token + // 不再重用了 const application = context.getApplication(); const [originToken] = await context.select( 'token', @@ -350,7 +351,7 @@ async function setUpTokenAndUser< if (originToken) { return originToken.value!; } - } + } */ const tokenData: EntityDict['token']['CreateSingle']['data'] = { id: await generateNewIdAsync(), env, @@ -1865,6 +1866,24 @@ export async function wakeupParasite< * @returns */ function checkTokenEnvConsistency(env1: WebEnv | WechatMpEnv | NativeEnv, env2: WebEnv | WechatMpEnv | NativeEnv) { + if (env1.type !== env2.type) { + return false; + } + + switch (env1.type) { + case 'web': { + return env1.visitorId === (env2).visitorId; + } + case 'wechatMp': { + return true; + } + case 'native': { + return env1.visitorId === (env2).visitorId; + } + default: { + return false; + } + } return true; }