Эх сурвалжийг харах

feat: 修改子用户登录

河畔一角 2 долоо хоног өмнө
parent
commit
3678d5c675

+ 1 - 0
app.js

@@ -69,6 +69,7 @@ app.use(
   koajwt({ secret: config.JWT_SECRET }).unless({
     path: [
       /^\/api\/user\/login/,
+      /^\/api\/user\/admin\/login/,
       /^\/api\/user\/wechat/,
       /^\/api\/user\/sendEmail/,
       /^\/api\/user\/regist/,

+ 33 - 1
router/user.router.js

@@ -17,7 +17,7 @@ const request = require('../utils/request');
 const { Keyv } = require('keyv');
 const keyv = new Keyv();
 /**
- * 用户登录
+ * 编辑器端用户登录
  */
 router.post('/login', async (ctx) => {
   const { userName, userPwd, openId } = ctx.request.body;
@@ -48,6 +48,38 @@ router.post('/login', async (ctx) => {
   });
 });
 
+/**
+ * admin端登录
+ */
+router.post('/admin/login', async (ctx) => {
+  const { userName, userPwd, openId } = ctx.request.body;
+  if (!userName || !userPwd) {
+    util.fail(ctx, '用户名或密码不能为空');
+    return;
+  }
+  const pwd = new md5().update(userPwd).digest('hex');
+  const res = await userService.findSubUser(userName, pwd, openId || userName);
+
+  if (!res) {
+    util.fail(ctx, '用户名或密码错误');
+    return;
+  }
+  if (!res.openId && openId) {
+    const cacheUser = await keyv.get(openId);
+    if (cacheUser) {
+      await userService.bindOpenId({ ...cacheUser, id: res.id });
+    }
+  }
+
+  const token = util.createToken({ userName, userId: res.id, nickName: res.nickName });
+  userService.updateUserInfo(res.id);
+  util.success(ctx, {
+    userId: res.id,
+    userName,
+    token,
+  });
+});
+
 /**
  * 微信授权登录
  */

+ 7 - 0
service/user.service.js

@@ -8,6 +8,13 @@ class UserService {
     const [result] = await connection.execute(statement, [userName, userPwd, openId]);
     return result[0];
   }
+  // 子用户登录
+  async findSubUser(userName, userPwd, openId) {
+    const statement =
+      'SELECT id, open_id as openId, user_name as userName, nick_name as nickName, avatar FROM users WHERE (user_name = ? and user_pwd = ? and parent_id is not null) or open_id = ? ;';
+    const [result] = await connection.execute(statement, [userName, userPwd, openId]);
+    return result[0];
+  }
   // 用户注册
   async create(nickName, userName, userPwd, parentId = null) {
     const statement = 'INSERT INTO users (nick_name, user_name, user_pwd, parent_id) VALUES (?, ?, ?, ?);';