修改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 entityId, // 如果是现有对象传id如果没有对象传createData
createData, user) { createData, user) {
return tslib_1.__awaiter(this, void 0, void 0, function () { 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 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 _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19; var _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
return tslib_1.__generator(this, function (_20) { return tslib_1.__generator(this, function (_21) {
switch (_20.label) { switch (_21.label) {
case 0: case 0:
currentToken = context.getToken(true); currentToken = context.getToken(true);
schema = context.getSchema(); schema = context.getSchema();
@ -207,32 +207,32 @@ createData, user) {
} }
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)]; return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 2: case 2:
_20.sent(); _21.sent();
return [2 /*return*/, currentToken.id]; return [2 /*return*/, currentToken.id];
case 3: case 3:
(0, assert_1.assert)(currentToken.id !== user.id); (0, assert_1.assert)(currentToken.id !== user.id);
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)]; return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 4: case 4:
_20.sent(); _21.sent();
_c = (_b = context).operate; _c = (_b = context).operate;
_d = ['user']; _d = ['user'];
_6 = {}; _9 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 5: return [4 /*yield*/, _c.apply(_b, _d.concat([(_6.id = _20.sent(), case 5: return [4 /*yield*/, _c.apply(_b, _d.concat([(_9.id = _21.sent(),
_6.action = 'activate', _9.action = 'activate',
_6.data = {}, _9.data = {},
_6.filter = { _9.filter = {
id: user.id, id: user.id,
}, },
_6), { dontCollect: true }]))]; _9), { dontCollect: true }]))];
case 6: case 6:
_20.sent(); _21.sent();
return [2 /*return*/, currentToken.id]; return [2 /*return*/, currentToken.id];
case 7: case 7:
{ {
throw new Exception_1.OakUserDisabledException(); throw new Exception_1.OakUserDisabledException();
} }
_20.label = 8; _21.label = 8;
case 8: case 8:
(0, assert_1.assert)(user.refId); (0, assert_1.assert)(user.refId);
if (user.refId === currentToken.id) { 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")); 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)]; return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
case 9: case 9:
_20.sent(); _21.sent();
return [2 /*return*/, currentToken.id]; return [2 /*return*/, currentToken.id];
case 10: case 10:
{ {
(0, assert_1.assert)(false, "\u4E0D\u80FD\u7406\u89E3\u7684user\u72B6\u6001\u300C".concat(userState, "\u300D")); (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 11: return [3 /*break*/, 19];
case 12: case 12:
// 没用户,指向当前用户 // 没用户,指向当前用户
@ -256,37 +256,37 @@ createData, user) {
if (!createData) return [3 /*break*/, 15]; if (!createData) return [3 /*break*/, 15];
_f = (_e = context).operate; _f = (_e = context).operate;
_g = [entity]; _g = [entity];
_7 = {}; _10 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 13: return [4 /*yield*/, _f.apply(_e, _g.concat([(_7.id = _20.sent(), case 13: return [4 /*yield*/, _f.apply(_e, _g.concat([(_10.id = _21.sent(),
_7.action = 'create', _10.action = 'create',
_7.data = Object.assign(createData, { _10.data = Object.assign(createData, {
userId: currentToken.userId, userId: currentToken.userId,
}), }),
_7), { dontCollect: true }]))]; _10), { dontCollect: true }]))];
case 14: case 14:
_20.sent(); _21.sent();
return [3 /*break*/, 18]; return [3 /*break*/, 18];
case 15: case 15:
(0, assert_1.assert)(entityId); (0, assert_1.assert)(entityId);
_j = (_h = context).operate; _j = (_h = context).operate;
_k = [entity]; _k = [entity];
_8 = {}; _11 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 16: return [4 /*yield*/, _j.apply(_h, _k.concat([(_8.id = _20.sent(), case 16: return [4 /*yield*/, _j.apply(_h, _k.concat([(_11.id = _21.sent(),
_8.action = 'update', _11.action = 'update',
_8.data = { _11.data = {
userId: currentToken.userId, userId: currentToken.userId,
}, },
_8.filter = { _11.filter = {
id: entityId, id: entityId,
}, },
_8), { dontCollect: true }]))]; _11), { dontCollect: true }]))];
case 17: case 17:
_20.sent(); _21.sent();
_20.label = 18; _21.label = 18;
case 18: return [2 /*return*/, currentToken.id]; case 18: return [2 /*return*/, currentToken.id];
case 19: return [3 /*break*/, 47]; case 19: return [3 /*break*/, 50];
case 20: case 20:
if (!entityId) return [3 /*break*/, 22]; if (!entityId) return [3 /*break*/, 22];
application = context.getApplication(); application = context.getApplication();
@ -302,19 +302,19 @@ createData, user) {
}, },
}, { dontCollect: true })]; }, { dontCollect: true })];
case 21: 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) { if (originToken) {
return [2 /*return*/, originToken.id]; return [2 /*return*/, originToken.id];
} }
_20.label = 22; _21.label = 22;
case 22: case 22:
_9 = {}; _12 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 23: case 23:
tokenData = (_9.id = _20.sent(), tokenData = (_12.id = _21.sent(),
_9.env = env, _12.env = env,
_9); _12);
if (!user) return [3 /*break*/, 34]; if (!user) return [3 /*break*/, 37];
userState = user.userState; userState = user.userState;
_m = userState; _m = userState;
switch (_m) { switch (_m) {
@ -334,15 +334,18 @@ createData, user) {
} }
else { else {
(0, assert_1.assert)(createData); (0, assert_1.assert)(createData);
Object.assign(tokenData, (_10 = {}, Object.assign(createData, {
_10[entity] = Object.assign(createData, { userId: user.id,
userId: user.id, });
}), // Object.assign(tokenData, {
_10)); // [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
} }
return [3 /*break*/, 31]; return [3 /*break*/, 31];
} }
_20.label = 25; _21.label = 25;
case 25: case 25:
{ {
tokenData.userId = user.refId; tokenData.userId = user.refId;
@ -353,34 +356,37 @@ createData, user) {
} }
else { else {
(0, assert_1.assert)(createData); (0, assert_1.assert)(createData);
Object.assign(tokenData, (_11 = {}, Object.assign(createData, {
_11[entity] = Object.assign(createData, { userId: user.refId,
userId: user.refId, });
}), // Object.assign(tokenData, {
_11)); // [entity]: Object.assign(createData, {
// userId: user.refId,
// }),
// });
} }
return [3 /*break*/, 31]; return [3 /*break*/, 31];
} }
_20.label = 26; _21.label = 26;
case 26: case 26:
{ {
throw new Exception_1.OakUserDisabledException(); throw new Exception_1.OakUserDisabledException();
} }
_20.label = 27; _21.label = 27;
case 27: case 27:
_p = (_o = context).operate; _p = (_o = context).operate;
_q = ['user']; _q = ['user'];
_12 = {}; _13 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 28: return [4 /*yield*/, _p.apply(_o, _q.concat([(_12.id = _20.sent(), case 28: return [4 /*yield*/, _p.apply(_o, _q.concat([(_13.id = _21.sent(),
_12.action = 'activate', _13.action = 'activate',
_12.data = {}, _13.data = {},
_12.filter = { _13.filter = {
id: user.id, id: user.id,
}, },
_12), { dontCollect: true }]))]; _13), { dontCollect: true }]))];
case 29: case 29:
_20.sent(); _21.sent();
tokenData.userId = user.id; tokenData.userId = user.id;
tokenData.playerId = user.id; tokenData.playerId = user.id;
if (entityId) { if (entityId) {
@ -389,98 +395,118 @@ createData, user) {
} }
else { else {
(0, assert_1.assert)(createData); (0, assert_1.assert)(createData);
Object.assign(tokenData, (_13 = {}, Object.assign(createData, {
_13[entity] = Object.assign(createData, { userId: user.id,
userId: user.id, });
}), // Object.assign(tokenData, {
_13)); // [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
} }
return [3 /*break*/, 31]; return [3 /*break*/, 31];
case 30: case 30:
{ {
(0, assert_1.assert)(false, "\u4E0D\u80FD\u7406\u89E3\u7684user\u72B6\u6001\u300C".concat(userState, "\u300D")); (0, assert_1.assert)(false, "\u4E0D\u80FD\u7406\u89E3\u7684user\u72B6\u6001\u300C".concat(userState, "\u300D"));
} }
_20.label = 31; _21.label = 31;
case 31: case 31:
if (!!entityId) return [3 /*break*/, 34];
_s = (_r = context).operate; _s = (_r = context).operate;
_t = ['token']; _t = [entity];
_14 = {}; _14 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; 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.action = 'create',
_14.data = tokenData, _14.data = createData,
_14), { dontCollect: true }]))]; _14), { dontCollect: true }]))];
case 33: case 33:
_20.sent(); _21.sent();
return [2 /*return*/, tokenData.id]; Object.assign(tokenData, {
entity: entity,
entityId: createData.id,
});
_21.label = 34;
case 34: case 34:
_v = (_u = context).operate;
_w = ['token'];
_15 = {}; _15 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 35: case 35: return [4 /*yield*/, _v.apply(_u, _w.concat([(_15.id = _21.sent(),
userData = (_15.id = _20.sent(), _15.action = 'create',
_15.userState = 'normal', _15.data = tokenData,
_15); _15), { dontCollect: true }]))];
_v = (_u = context).operate; case 36:
_w = ['user']; _21.sent();
return [2 /*return*/, tokenData.id];
case 37:
_16 = {}; _16 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 36: return [4 /*yield*/, _v.apply(_u, _w.concat([(_16.id = _20.sent(), case 38:
_16.action = 'create', userData = (_16.id = _21.sent(),
_16.data = userData, _16.userState = 'normal',
_16), {}]))]; _16);
case 37: _y = (_x = context).operate;
_20.sent(); _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.userId = userData.id;
tokenData.playerId = userData.id; tokenData.playerId = userData.id;
tokenData.entity = entity; tokenData.entity = entity;
tokenData.entityId = createData.id; 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; _1 = (_0 = context).operate;
_2 = [entity]; _2 = ['token'];
_18 = {}; _18 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; 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.action = 'create',
_18.data = Object.assign(createData, { _18.data = tokenData,
userId: userData.id,
}),
_18), { dontCollect: true }]))]; _18), { dontCollect: true }]))];
case 42: case 42:
_20.sent(); _21.sent();
return [3 /*break*/, 46]; return [4 /*yield*/, context.setTokenValue(tokenData.id)];
case 43: case 43:
(0, assert_1.assert)(entityId); _21.sent();
if (!createData) return [3 /*break*/, 46];
_4 = (_3 = context).operate; _4 = (_3 = context).operate;
_5 = [entity]; _5 = [entity];
_19 = {}; _19 = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()]; return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 44: return [4 /*yield*/, _4.apply(_3, _5.concat([(_19.id = _20.sent(), case 44: return [4 /*yield*/, _4.apply(_3, _5.concat([(_19.id = _21.sent(),
_19.action = 'update', _19.action = 'create',
_19.data = { _19.data = Object.assign(createData, {
userId: userData.id, userId: userData.id,
}, }),
_19.filter = {
id: entityId,
},
_19), { dontCollect: true }]))]; _19), { dontCollect: true }]))];
case 45: case 45:
_20.sent(); _21.sent();
_20.label = 46; return [3 /*break*/, 49];
case 46: return [2 /*return*/, tokenData.id]; case 46:
case 47: return [2 /*return*/]; (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 { tokenProjection } from '../types/projection';
import { sendSms } from '../utils/sms'; import { sendSms } from '../utils/sms';
import { mergeUser } from './user'; 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) { async function makeDistinguishException<ED extends EntityDict, Cxt extends BackendRuntimeContext<ED>>(userId: string, context: Cxt, message?: string) {
const [user] = await context.select('user', { const [user] = await context.select('user', {
@ -265,11 +266,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
} }
else { else {
assert(createData); assert(createData);
Object.assign(tokenData, { Object.assign(createData, {
[entity]: Object.assign(createData, { userId: user.id,
userId: user.id,
}),
}); });
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
} }
break; break;
} }
@ -282,11 +286,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
} }
else { else {
assert(createData); assert(createData);
Object.assign(tokenData, { Object.assign(createData, {
[entity]: Object.assign(createData, { userId: user.refId,
userId: user.refId,
}),
}); });
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.refId,
// }),
// });
} }
break; break;
} }
@ -310,11 +317,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
} }
else { else {
assert(createData); assert(createData);
Object.assign(tokenData, { Object.assign(createData, {
[entity]: Object.assign(createData, { userId: user.id,
userId: user.id,
}),
}); });
// Object.assign(tokenData, {
// [entity]: Object.assign(createData, {
// userId: user.id,
// }),
// });
} }
break; break;
} }
@ -322,7 +332,17 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
assert(false, `不能理解的user状态「${userState}`); 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', { await context.operate('token', {
id: await generateNewIdAsync(), id: await generateNewIdAsync(),
action: 'create', action: 'create',