增加userInfo接口
This commit is contained in:
@@ -42,7 +42,7 @@ class HandlerUser {
|
||||
|
||||
// 从上图获取手机号
|
||||
const phoneNumber = phoneData.phone_info?.phoneNumber;
|
||||
return ResponseUtil.success(ctx, {phoneNumber}, "获取手机号成功");
|
||||
return ResponseUtil.success(ctx, { phoneNumber }, "获取手机号成功");
|
||||
} catch (err) {
|
||||
return ResponseUtil.internalError(ctx, err.message);
|
||||
}
|
||||
@@ -117,7 +117,7 @@ class HandlerUser {
|
||||
const token = await this.genToken(user._id.toString());
|
||||
user.security.token = token;
|
||||
}
|
||||
user.security.tokenExpiry = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);
|
||||
user.security.tokenExpiry = new Date(Date.now() + 15 * 24 * 60 * 60 * 1000);
|
||||
await user.save();
|
||||
|
||||
// 安全起见删除密码相关字段
|
||||
@@ -199,6 +199,43 @@ class HandlerUser {
|
||||
return ResponseUtil.success(ctx, null, "退出登录成功");
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
async userInfo(ctx) {
|
||||
try {
|
||||
const { token, userId } = ctx.request.body;
|
||||
if (!token || !userId) {
|
||||
return ResponseUtil.badRequest(ctx, "缺少 token 或 userId");
|
||||
}
|
||||
|
||||
let user = null;
|
||||
if (token) {
|
||||
user = await DBModel.User.findOne({ "security.token": token });
|
||||
}
|
||||
else {
|
||||
user = await DBModel.User.findOne({ "_id": userId });
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return ResponseUtil.unauthorized(ctx, "用户未登录或 token 无效");
|
||||
}
|
||||
|
||||
const isTokenValid = user.security.token &&
|
||||
user.security.tokenExpiry &&
|
||||
new Date() < user.security.tokenExpiry;
|
||||
if (!isTokenValid) {
|
||||
return ResponseUtil.unauthorized(ctx, "登录已过期,请重新登录");
|
||||
}
|
||||
|
||||
// 安全起见删除密码相关字段
|
||||
delete user.security.passwd;
|
||||
delete user.security.passwdSalt;
|
||||
|
||||
return ResponseUtil.success(ctx, { user }, "获取用户信息成功");
|
||||
} catch (err) {
|
||||
return ResponseUtil.internalError(ctx, err.message);
|
||||
}
|
||||
}
|
||||
|
||||
// 生成 token
|
||||
async genToken(uid) {
|
||||
const crypto = await import("crypto");
|
||||
|
||||
@@ -15,6 +15,7 @@ class ApiRouter {
|
||||
userRouter.post('/wxsignin', this.handler.wxSignin.bind(this.handler));
|
||||
userRouter.post('/update', this.handler.updateUser.bind(this.handler));
|
||||
userRouter.post('/signout', this.handler.signout.bind(this.handler));
|
||||
userRouter.post('/userInfo', this.handler.userInfo.bind(this.handler));
|
||||
|
||||
this.router.use(userRouter.routes());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user