修改mergeUser时merge自己的bug
This commit is contained in:
parent
c677499282
commit
e0957e5c8f
|
|
@ -202,7 +202,7 @@ createData, user) {
|
|||
}
|
||||
return [3 /*break*/, 10];
|
||||
case 1:
|
||||
if (currentToken.id === user.id) {
|
||||
if (currentToken.userId === user.id) {
|
||||
return [2 /*return*/, currentToken.id];
|
||||
}
|
||||
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
|
||||
|
|
@ -210,7 +210,7 @@ createData, user) {
|
|||
_23.sent();
|
||||
return [2 /*return*/, currentToken.id];
|
||||
case 3:
|
||||
(0, assert_1.assert)(currentToken.id !== user.id);
|
||||
(0, assert_1.assert)(currentToken.userId !== user.id);
|
||||
return [4 /*yield*/, (0, user_1.mergeUser)({ from: user.id, to: currentToken.userId }, context, true)];
|
||||
case 4:
|
||||
_23.sent();
|
||||
|
|
@ -235,7 +235,7 @@ createData, user) {
|
|||
_23.label = 8;
|
||||
case 8:
|
||||
(0, assert_1.assert)(user.refId);
|
||||
if (user.refId === currentToken.id) {
|
||||
if (user.refId === currentToken.userId) {
|
||||
return [2 /*return*/, currentToken.id];
|
||||
}
|
||||
// 说明一个用户被其他用户merge了,现在还是暂时先merge,后面再说
|
||||
|
|
@ -471,10 +471,10 @@ createData, user) {
|
|||
}
|
||||
function setupMobile(mobile, env, context) {
|
||||
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
||||
var result2, _a, mobileRow, user, _b, _c;
|
||||
var _d;
|
||||
return tslib_1.__generator(this, function (_e) {
|
||||
switch (_e.label) {
|
||||
var result2, _a, mobileRow, user, _b, userState, ref, _c, _d;
|
||||
var _e;
|
||||
return tslib_1.__generator(this, function (_f) {
|
||||
switch (_f.label) {
|
||||
case 0: return [4 /*yield*/, context.select('mobile', {
|
||||
data: {
|
||||
id: 1,
|
||||
|
|
@ -485,6 +485,11 @@ function setupMobile(mobile, env, context) {
|
|||
id: 1,
|
||||
userState: 1,
|
||||
refId: 1,
|
||||
ref: {
|
||||
id: 1,
|
||||
userState: 1,
|
||||
refId: 1,
|
||||
},
|
||||
wechatUser$user: {
|
||||
$entity: 'wechatUser',
|
||||
data: {
|
||||
|
|
@ -506,25 +511,29 @@ function setupMobile(mobile, env, context) {
|
|||
}
|
||||
}, { dontCollect: true })];
|
||||
case 1:
|
||||
result2 = _e.sent();
|
||||
if (!(result2.length > 0)) return [3 /*break*/, 3];
|
||||
result2 = _f.sent();
|
||||
if (!(result2.length > 0)) return [3 /*break*/, 5];
|
||||
// 此手机号已经存在
|
||||
(0, assert_1.assert)(result2.length === 1);
|
||||
_a = tslib_1.__read(result2, 1), mobileRow = _a[0];
|
||||
user = mobileRow.user;
|
||||
return [4 /*yield*/, setUpTokenAndUser(env, context, 'mobile', mobileRow.id, undefined, user)];
|
||||
case 2: return [2 /*return*/, _e.sent()];
|
||||
case 3:
|
||||
_b = setUpTokenAndUser;
|
||||
_c = [env, context, 'mobile', undefined];
|
||||
_d = {};
|
||||
_b = user, userState = _b.userState, ref = _b.ref;
|
||||
if (!(userState === 'merged')) return [3 /*break*/, 3];
|
||||
return [4 /*yield*/, setUpTokenAndUser(env, context, 'mobile', mobileRow.id, undefined, ref)];
|
||||
case 2: return [2 /*return*/, _f.sent()];
|
||||
case 3: return [4 /*yield*/, setUpTokenAndUser(env, context, 'mobile', mobileRow.id, undefined, user)];
|
||||
case 4: return [2 /*return*/, _f.sent()];
|
||||
case 5:
|
||||
_c = setUpTokenAndUser;
|
||||
_d = [env, context, 'mobile', undefined];
|
||||
_e = {};
|
||||
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
|
||||
case 4: return [4 /*yield*/, _b.apply(void 0, _c.concat([(_d.id = _e.sent(),
|
||||
_d.mobile = mobile,
|
||||
_d)]))];
|
||||
case 5:
|
||||
case 6: return [4 /*yield*/, _c.apply(void 0, _d.concat([(_e.id = _f.sent(),
|
||||
_e.mobile = mobile,
|
||||
_e)]))];
|
||||
case 7:
|
||||
//此手机号不存在
|
||||
return [2 /*return*/, _e.sent()];
|
||||
return [2 /*return*/, _f.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ function mergeUser(params, context, innerLogic) {
|
|||
from = params.from, to = params.to;
|
||||
(0, assert_1.default)(from);
|
||||
(0, assert_1.default)(to);
|
||||
(0, assert_1.default)(from !== to, '不能merge到相同user');
|
||||
schema = context.getSchema();
|
||||
_b = (_a = context).operate;
|
||||
_c = ['token'];
|
||||
|
|
@ -65,6 +66,7 @@ function mergeUser(params, context, innerLogic) {
|
|||
_g.action = 'disable',
|
||||
_g.data = {},
|
||||
_g.filter = {
|
||||
ableState: 'enabled',
|
||||
playerId: from, // todo 这里是playerId, root如果正在扮演该用户待处理
|
||||
},
|
||||
_g), { dontCollect: true }]))];
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ export interface Schema extends EntityShape {
|
|||
openId?: String<32>;
|
||||
unionId?: String<32>;
|
||||
sessionKey?: String<64>;
|
||||
accessToken?: String<64>;
|
||||
accessToken?: String<128>;
|
||||
refreshToken?: String<64>;
|
||||
scope?: String<64>;
|
||||
atExpiredAt?: Datetime;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare type OpSchema = EntityShape & {
|
|||
openId?: String<32> | null;
|
||||
unionId?: String<32> | null;
|
||||
sessionKey?: String<64> | null;
|
||||
accessToken?: String<64> | null;
|
||||
accessToken?: String<128> | null;
|
||||
refreshToken?: String<64> | null;
|
||||
scope?: String<64> | null;
|
||||
atExpiredAt?: Datetime | null;
|
||||
|
|
@ -33,7 +33,7 @@ export declare type Schema = EntityShape & {
|
|||
openId?: String<32> | null;
|
||||
unionId?: String<32> | null;
|
||||
sessionKey?: String<64> | null;
|
||||
accessToken?: String<64> | null;
|
||||
accessToken?: String<128> | null;
|
||||
refreshToken?: String<64> | null;
|
||||
scope?: String<64> | null;
|
||||
atExpiredAt?: Datetime | null;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ exports.desc = {
|
|||
accessToken: {
|
||||
type: "varchar",
|
||||
params: {
|
||||
length: 64
|
||||
length: 128
|
||||
}
|
||||
},
|
||||
refreshToken: {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
|
|||
import { tokenProjection } from '../types/projection';
|
||||
import { sendSms } from '../utils/sms';
|
||||
import { mergeUser } from './user';
|
||||
import { users } from '../data/userRole';
|
||||
|
||||
async function makeDistinguishException<ED extends EntityDict, Cxt extends BackendRuntimeContext<ED>>(userId: string, context: Cxt, message?: string) {
|
||||
const [user] = await context.select('user', {
|
||||
|
|
@ -162,14 +163,14 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
|
|||
const { userState } = user;
|
||||
switch (userState) {
|
||||
case 'normal': {
|
||||
if (currentToken.id === user.id) {
|
||||
if (currentToken.userId === user.id) {
|
||||
return currentToken.id;
|
||||
}
|
||||
await mergeUser<ED, Cxt>({ from: user.id!, to: currentToken.userId! }, context, true);
|
||||
return currentToken.id;
|
||||
}
|
||||
case 'shadow': {
|
||||
assert(currentToken.id !== user.id);
|
||||
assert(currentToken.userId !== user.id);
|
||||
await mergeUser<ED, Cxt>({ from: user.id!, to: currentToken.userId! }, context, true);
|
||||
await context.operate('user', {
|
||||
id: await generateNewIdAsync(),
|
||||
|
|
@ -186,7 +187,7 @@ async function setUpTokenAndUser<ED extends EntityDict, Cxt extends BackendRunti
|
|||
}
|
||||
case 'merged': {
|
||||
assert(user.refId);
|
||||
if (user.refId === currentToken.id) {
|
||||
if (user.refId === currentToken.userId) {
|
||||
return currentToken.id;
|
||||
}
|
||||
// 说明一个用户被其他用户merge了,现在还是暂时先merge,后面再说
|
||||
|
|
@ -370,6 +371,11 @@ async function setupMobile<ED extends EntityDict, Cxt extends BackendRuntimeCont
|
|||
id: 1,
|
||||
userState: 1,
|
||||
refId: 1,
|
||||
ref: {
|
||||
id: 1,
|
||||
userState: 1,
|
||||
refId: 1,
|
||||
},
|
||||
wechatUser$user: {
|
||||
$entity: 'wechatUser',
|
||||
data: {
|
||||
|
|
@ -395,6 +401,11 @@ async function setupMobile<ED extends EntityDict, Cxt extends BackendRuntimeCont
|
|||
assert(result2.length === 1);
|
||||
const [mobileRow] = result2;
|
||||
const { user } = mobileRow;
|
||||
const { userState, ref } = user!;
|
||||
if (userState === 'merged') {
|
||||
return await setUpTokenAndUser<ED, Cxt>(env, context, 'mobile', mobileRow.id, undefined, ref as Partial<ED['user']['Schema']>);
|
||||
|
||||
}
|
||||
return await setUpTokenAndUser<ED, Cxt>(env, context, 'mobile', mobileRow.id, undefined, user as Partial<ED['user']['Schema']>);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export async function mergeUser<ED extends EntityDict & BaseEntityDict, Cxt exte
|
|||
const { from, to } = params;
|
||||
assert(from);
|
||||
assert(to);
|
||||
assert(from !== to, '不能merge到相同user');
|
||||
const schema = context.getSchema();
|
||||
/* for (const entity in schema) {
|
||||
if (['oper', 'modi', 'operEntity', 'modiEntity', 'userEntityGrant', 'wechatQrCode'].includes(entity)) {
|
||||
|
|
@ -56,6 +57,7 @@ export async function mergeUser<ED extends EntityDict & BaseEntityDict, Cxt exte
|
|||
action: 'disable',
|
||||
data: {},
|
||||
filter: {
|
||||
ableState: 'enabled',
|
||||
playerId: from, // todo 这里是playerId, root如果正在扮演该用户待处理
|
||||
},
|
||||
}, { dontCollect: true });
|
||||
|
|
|
|||
Loading…
Reference in New Issue