修改token在有同system下wechatUser但无当前system下wechatUser的逻辑

This commit is contained in:
wenjiarui 2023-04-17 11:23:19 +08:00
parent 8cda173e06
commit 46b9be2846
2 changed files with 173 additions and 127 deletions

View File

@ -178,10 +178,10 @@ function setUpTokenAndUser(env, context, entity, // 支持更多的登录渠道
entityId, // 如果是现有对象传id如果没有对象传createData
createData, user) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var currentToken, schema, userState, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, application, _l, originToken, tokenData, userState, _m, _o, _p, _q, _r, _s, _t, userData, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5;
var _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
return tslib_1.__generator(this, function (_20) {
switch (_20.label) {
var currentToken, schema, userState, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, application, _l, originToken, tokenData, userState, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, userData, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
var _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
return tslib_1.__generator(this, function (_21) {
switch (_21.label) {
case 0:
currentToken = context.getToken(true);
schema = context.getSchema();
@ -207,32 +207,32 @@ createData, user) {
}
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 2:
_20.sent();
_21.sent();
return [2 /*return*/, currentToken.id];
case 3:
(0, assert_1.assert)(currentToken.id !== user.id);
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 4:
_20.sent();
_21.sent();
_c = (_b = context).operate;
_d = ['user'];
_6 = {};
_9 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 5: return [4 /*yield*/, _c.apply(_b, _d.concat([(_6.id = _20.sent(),
_6.action = 'activate',
_6.data = {},
_6.filter = {
case 5: return [4 /*yield*/, _c.apply(_b, _d.concat([(_9.id = _21.sent(),
_9.action = 'activate',
_9.data = {},
_9.filter = {
id: user.id,
},
_6), { dontCollect: true }]))];
_9), { dontCollect: true }]))];
case 6:
_20.sent();
_21.sent();
return [2 /*return*/, currentToken.id];
case 7:
{
throw new Exception_1.OakUserDisabledException();
}
_20.label = 8;
_21.label = 8;
case 8:
(0, assert_1.assert)(user.refId);
if (user.refId === currentToken.id) {
@ -242,13 +242,13 @@ createData, user) {
console.warn("\u7528\u6237".concat(user.id, "\u5DF2\u7ECF\u662Fmerged\u72B6\u6001\u300C").concat(user.refId, "\u300D\uFF0C\u518D\u6B21\u88ABmerged\u5230\u300C").concat(currentToken.userId, "]\u300D"));
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 9:
_20.sent();
_21.sent();
return [2 /*return*/, currentToken.id];
case 10:
{
(0, assert_1.assert)(false, "\u4E0D\u80FD\u7406\u89E3\u7684user\u72B6\u6001\u300C".concat(userState, "\u300D"));
}
_20.label = 11;
_21.label = 11;
case 11: return [3 /*break*/, 19];
case 12:
// 没用户,指向当前用户
@ -256,37 +256,37 @@ createData, user) {
if (!createData) return [3 /*break*/, 15];
_f = (_e = context).operate;
_g = [entity];
_7 = {};
_10 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 13: return [4 /*yield*/, _f.apply(_e, _g.concat([(_7.id = _20.sent(),
_7.action = 'create',
_7.data = Object.assign(createData, {
case 13: return [4 /*yield*/, _f.apply(_e, _g.concat([(_10.id = _21.sent(),
_10.action = 'create',
_10.data = Object.assign(createData, {
userId: currentToken.userId,
}),
_7), { dontCollect: true }]))];
_10), { dontCollect: true }]))];
case 14:
_20.sent();
_21.sent();
return [3 /*break*/, 18];
case 15:
(0, assert_1.assert)(entityId);
_j = (_h = context).operate;
_k = [entity];
_8 = {};
_11 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 16: return [4 /*yield*/, _j.apply(_h, _k.concat([(_8.id = _20.sent(),
_8.action = 'update',
_8.data = {
case 16: return [4 /*yield*/, _j.apply(_h, _k.concat([(_11.id = _21.sent(),
_11.action = 'update',
_11.data = {
userId: currentToken.userId,
},
_8.filter = {
_11.filter = {
id: entityId,
},
_8), { dontCollect: true }]))];
_11), { dontCollect: true }]))];
case 17:
_20.sent();
_20.label = 18;
_21.sent();
_21.label = 18;
case 18: return [2 /*return*/, currentToken.id];
case 19: return [3 /*break*/, 47];
case 19: return [3 /*break*/, 50];
case 20:
if (!entityId) return [3 /*break*/, 22];
application = context.getApplication();
@ -302,19 +302,19 @@ createData, user) {
},
}, { dontCollect: true })];
case 21:
_l = tslib_1.__read.apply(void 0, [_20.sent(), 1]), originToken = _l[0];
_l = tslib_1.__read.apply(void 0, [_21.sent(), 1]), originToken = _l[0];
if (originToken) {
return [2 /*return*/, originToken.id];
}
_20.label = 22;
_21.label = 22;
case 22:
_9 = {};
_12 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 23:
tokenData = (_9.id = _20.sent(),
_9.env = env,
_9);
if (!user) return [3 /*break*/, 34];
tokenData = (_12.id = _21.sent(),
_12.env = env,
_12);
if (!user) return [3 /*break*/, 37];
userState = user.userState;
_m = userState;
switch (_m) {
@ -334,15 +334,18 @@ createData, user) {
}
else {
(0, assert_1.assert)(createData);
Object.assign(tokenData, (_10 = {},
_10[entity] = Object.assign(createData, {
Object.assign(createData, {
userId: user.id,
}),
_10));
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
}
return [3 /*break*/, 31];
}
_20.label = 25;
_21.label = 25;
case 25:
{
tokenData.userId = user.refId;
@ -353,34 +356,37 @@ createData, user) {
}
else {
(0, assert_1.assert)(createData);
Object.assign(tokenData, (_11 = {},
_11[entity] = Object.assign(createData, {
Object.assign(createData, {
userId: user.refId,
}),
_11));
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.refId,
// }),
// });
}
return [3 /*break*/, 31];
}
_20.label = 26;
_21.label = 26;
case 26:
{
throw new Exception_1.OakUserDisabledException();
}
_20.label = 27;
_21.label = 27;
case 27:
_p = (_o = context).operate;
_q = ['user'];
_12 = {};
_13 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 28: return [4 /*yield*/, _p.apply(_o, _q.concat([(_12.id = _20.sent(),
_12.action = 'activate',
_12.data = {},
_12.filter = {
case 28: return [4 /*yield*/, _p.apply(_o, _q.concat([(_13.id = _21.sent(),
_13.action = 'activate',
_13.data = {},
_13.filter = {
id: user.id,
},
_12), { dontCollect: true }]))];
_13), { dontCollect: true }]))];
case 29:
_20.sent();
_21.sent();
tokenData.userId = user.id;
tokenData.playerId = user.id;
if (entityId) {
@ -389,98 +395,118 @@ createData, user) {
}
else {
(0, assert_1.assert)(createData);
Object.assign(tokenData, (_13 = {},
_13[entity] = Object.assign(createData, {
Object.assign(createData, {
userId: user.id,
}),
_13));
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
}
return [3 /*break*/, 31];
case 30:
{
(0, assert_1.assert)(false, "\u4E0D\u80FD\u7406\u89E3\u7684user\u72B6\u6001\u300C".concat(userState, "\u300D"));
}
_20.label = 31;
_21.label = 31;
case 31:
if (!!entityId) return [3 /*break*/, 34];
_s = (_r = context).operate;
_t = ['token'];
_t = [entity];
_14 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 32: return [4 /*yield*/, _s.apply(_r, _t.concat([(_14.id = _20.sent(),
case 32: return [4 /*yield*/, _s.apply(_r, _t.concat([(_14.id = _21.sent(),
_14.action = 'create',
_14.data = tokenData,
_14.data = createData,
_14), { dontCollect: true }]))];
case 33:
_20.sent();
return [2 /*return*/, tokenData.id];
_21.sent();
Object.assign(tokenData, {
entity: entity,
entityId: createData.id,
});
_21.label = 34;
case 34:
_v = (_u = context).operate;
_w = ['token'];
_15 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 35:
userData = (_15.id = _20.sent(),
_15.userState = 'normal',
_15);
_v = (_u = context).operate;
_w = ['user'];
case 35: return [4 /*yield*/, _v.apply(_u, _w.concat([(_15.id = _21.sent(),
_15.action = 'create',
_15.data = tokenData,
_15), { dontCollect: true }]))];
case 36:
_21.sent();
return [2 /*return*/, tokenData.id];
case 37:
_16 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 36: return [4 /*yield*/, _v.apply(_u, _w.concat([(_16.id = _20.sent(),
_16.action = 'create',
_16.data = userData,
_16), {}]))];
case 37:
_20.sent();
case 38:
userData = (_16.id = _21.sent(),
_16.userState = 'normal',
_16);
_y = (_x = context).operate;
_z = ['user'];
_17 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 39: return [4 /*yield*/, _y.apply(_x, _z.concat([(_17.id = _21.sent(),
_17.action = 'create',
_17.data = userData,
_17), {}]))];
case 40:
_21.sent();
tokenData.userId = userData.id;
tokenData.playerId = userData.id;
tokenData.entity = entity;
tokenData.entityId = createData.id;
_y = (_x = context).operate;
_z = ['token'];
_17 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 38: return [4 /*yield*/, _y.apply(_x, _z.concat([(_17.id = _20.sent(),
_17.action = 'create',
_17.data = tokenData,
_17), { dontCollect: true }]))];
case 39:
_20.sent();
return [4 /*yield*/, context.setTokenValue(tokenData.id)];
case 40:
_20.sent();
if (!createData) return [3 /*break*/, 43];
_1 = (_0 = context).operate;
_2 = [entity];
_2 = ['token'];
_18 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 41: return [4 /*yield*/, _1.apply(_0, _2.concat([(_18.id = _20.sent(),
case 41: return [4 /*yield*/, _1.apply(_0, _2.concat([(_18.id = _21.sent(),
_18.action = 'create',
_18.data = Object.assign(createData, {
userId: userData.id,
}),
_18.data = tokenData,
_18), { dontCollect: true }]))];
case 42:
_20.sent();
return [3 /*break*/, 46];
_21.sent();
return [4 /*yield*/, context.setTokenValue(tokenData.id)];
case 43:
(0, assert_1.assert)(entityId);
_21.sent();
if (!createData) return [3 /*break*/, 46];
_4 = (_3 = context).operate;
_5 = [entity];
_19 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 44: return [4 /*yield*/, _4.apply(_3, _5.concat([(_19.id = _20.sent(),
_19.action = 'update',
_19.data = {
case 44: return [4 /*yield*/, _4.apply(_3, _5.concat([(_19.id = _21.sent(),
_19.action = 'create',
_19.data = Object.assign(createData, {
userId: userData.id,
},
_19.filter = {
id: entityId,
},
}),
_19), { dontCollect: true }]))];
case 45:
_20.sent();
_20.label = 46;
case 46: return [2 /*return*/, tokenData.id];
case 47: return [2 /*return*/];
_21.sent();
return [3 /*break*/, 49];
case 46:
(0, assert_1.assert)(entityId);
_7 = (_6 = context).operate;
_8 = [entity];
_20 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 47: return [4 /*yield*/, _7.apply(_6, _8.concat([(_20.id = _21.sent(),
_20.action = 'update',
_20.data = {
userId: userData.id,
},
_20.filter = {
id: entityId,
},
_20), { dontCollect: true }]))];
case 48:
_21.sent();
_21.label = 49;
case 49: return [2 /*return*/, tokenData.id];
case 50: return [2 /*return*/];
}
});
});

View File

@ -16,6 +16,7 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
import { tokenProjection } from '../types/projection';
import { sendSms } from '../utils/sms';
import { mergeUser } from './user';
import Operation from 'antd/es/transfer/operation';
async function makeDistinguishException<ED extends EntityDict, Cxt extends BackendRuntimeContext<ED>>(userId: string, context: Cxt, message?: string) {
const [user] = await context.select('user', {
@ -265,11 +266,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
}
else {
assert(createData);
Object.assign(tokenData, {
[entity]: Object.assign(createData, {
Object.assign(createData, {
userId: user.id,
}),
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
}
break;
}
@ -282,11 +286,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
}
else {
assert(createData);
Object.assign(tokenData, {
[entity]: Object.assign(createData, {
Object.assign(createData, {
userId: user.refId,
}),
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.refId,
// }),
// });
}
break;
}
@ -310,11 +317,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
}
else {
assert(createData);
Object.assign(tokenData, {
[entity]: Object.assign(createData, {
Object.assign(createData, {
userId: user.id,
}),
});
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
}
break;
}
@ -322,7 +332,17 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
assert(false, `不能理解的user状态「${userState}`);
}
}
if (!entityId) {
await context.operate(entity as keyof ED, {
id: await generateNewIdAsync(),
action: 'create',
data: createData,
} as any, { dontCollect: true });
Object.assign(tokenData, {
entity,
entityId: createData.id,
})
}
await context.operate('token', {
id: await generateNewIdAsync(),
action: 'create',