liuyu 5 سال پیش
والد
کامیت
917cec6523
4فایلهای تغییر یافته به همراه17 افزوده شده و 11 حذف شده
  1. 2 0
      app/controller/.user.js
  2. 2 1
      app/model/user.js
  3. 9 9
      app/service/login.js
  4. 4 1
      app/service/user.js

+ 2 - 0
app/controller/.user.js

@@ -6,6 +6,7 @@ module.exports = {
       '!passwd',
       'openid',
       'role',
+      'menus',
       'uid',
       'remark'
     ]
@@ -23,6 +24,7 @@ module.exports = {
       'openid',
       'uid',
       'role',
+      'menus',
       'remark'
     ]
   },

+ 2 - 1
app/model/user.js

@@ -10,7 +10,8 @@ const UserSchema = {
   passwd: { type: Secret, select: false }, // 注册密码
   openid: { type: String, required: false }, // 微信openid
   uid: { type: String, required: false }, // 用户信息id
-  role: { type: [ String ], required: false }, // 权限
+  role: { type: String, required: false }, // 1-管理员,2-个人,3-企业管理员,4-子管理员
+  menus: { type: [ String ], required: false }, // 菜单权限
   remark: { type: String, required: false }, // 备注
 };
 

+ 9 - 9
app/service/login.js

@@ -34,14 +34,14 @@ class LoginService extends CrudService {
     // 取出用户的类型,根据用户类型返回相应信息
     const state = uuid();
     const key = `free:auth:state:${state}`;
-    const _roles = [];
-    for (const elm of user.role) {
-      const role = await this.rmodel.findById({ _id: ObjectId(elm) });
-      if (role) {
-        _roles.push(role);
+    const _menus = [];
+    for (const elm of user.menus) {
+      const _menu = await this.rmodel.findById({ _id: ObjectId(elm) });
+      if (_menu) {
+        _menus.push(_menu);
       }
     }
-    user.role = _roles;
+    user.menus = _menus;
     const token = await this.createJwt(user);
     await this.app.redis.set(key, token, 'EX', 60 * 60 * 24);
     return { key };
@@ -55,10 +55,10 @@ class LoginService extends CrudService {
   }
 
   // 创建登录Token
-  async createJwt({ id, name, phone, role, remark, openid }) {
-    const { secret, expiresIn = '1d', issuer = type } = this.config.jwt;
+  async createJwt({ id, name, phone, role, menus, remark, openid }) {
+    const { secret, expiresIn = '1d', issuer = role } = this.config.jwt;
     const subject = phone;
-    const res = { uid: id, name, phone, role, openid, remark };
+    const res = { uid: id, name, phone, role, menus, openid, remark };
     const token = await jwt.sign(res, secret, { expiresIn, issuer, subject });
     return token;
   }

+ 4 - 1
app/service/user.js

@@ -40,7 +40,7 @@ class UserService extends CrudService {
 
   // 重写修改方法
   async update({ id }, data) {
-    const { name, phone, passwd, openid, role, remark, uid } = data;
+    const { name, phone, passwd, openid, role, menus, remark, uid } = data;
     const user = await this.model.findById(id, '+passwd');
     if (name) {
       user.name = name;
@@ -58,6 +58,9 @@ class UserService extends CrudService {
     if (role) {
       user.role = role;
     }
+    if (menus) {
+      user.menus = menus;
+    }
     if (uid) {
       user.uid = uid;
     }