修改了登录验证方式
This commit is contained in:
@@ -73,35 +73,50 @@ class HandlerUser {
|
||||
if (!openid) {
|
||||
return ResponseUtil.error(ctx, "微信登录失败,未获取到 openid", null, 400);
|
||||
}
|
||||
|
||||
let user = await DBModel.User.findOne({ "social.wechat.openid": openid });
|
||||
|
||||
// 使用openid和phoneNumber查询用户
|
||||
let key = `app.${appId}.wxopenid`;
|
||||
let user = await DBModel.User.findOne({ [key]: openid });
|
||||
if (!user) {
|
||||
if (!phoneNumber) {
|
||||
return ResponseUtil.badRequest(ctx, "缺少手机号");
|
||||
}
|
||||
|
||||
const newUser = {
|
||||
profile: { name: name || phoneNumber, mobile: phoneNumber, },
|
||||
social: {
|
||||
wechat: { openid: openid },
|
||||
},
|
||||
status: { account: "normal", },
|
||||
app: {},
|
||||
};
|
||||
newUser.app[appId] = { role: ["user"], };
|
||||
user = await DBModel.User.findOne({ "profile.mobile": phoneNumber });
|
||||
if (!user) {
|
||||
const newUser = {
|
||||
profile: { name: name || phoneNumber, mobile: phoneNumber, },
|
||||
status: { account: "normal", },
|
||||
app: {},
|
||||
};
|
||||
newUser.app[appId] = { role: ["user"], wxopenid: openid };
|
||||
|
||||
user = await DBModel.User.setUser(newUser);
|
||||
} else {
|
||||
user = await DBModel.User.setUser(newUser);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (user) {
|
||||
if (phoneNumber && phoneNumber.length > 0 && user.profile.mobile !== phoneNumber) {
|
||||
user.profile.mobile = phoneNumber;
|
||||
}
|
||||
if (!(appId in user.app)) {
|
||||
user.app[appId].role = ["user"];
|
||||
user.app[appId] = { role: ["user"], wxopenid: openid };
|
||||
}
|
||||
user.app[appId].wxopenid = openid;
|
||||
} else {
|
||||
return ResponseUtil.internalError(ctx, "用户不存在");
|
||||
}
|
||||
|
||||
const token = await this.genToken(user._id.toString());
|
||||
user.security.token = token;
|
||||
// 更新Token
|
||||
const isTokenValid = user.security.token &&
|
||||
user.security.tokenExpiry &&
|
||||
new Date() < user.security.tokenExpiry;
|
||||
|
||||
if (!isTokenValid) {
|
||||
const token = await this.genToken(user._id.toString());
|
||||
user.security.token = token;
|
||||
}
|
||||
user.security.tokenExpiry = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);
|
||||
await user.save();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user