소스 검색

限制用户操作数据权限范围

RuoYi 1 년 전
부모
커밋
19c457ae5f

+ 1 - 1
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java

@@ -22,7 +22,7 @@ public class SysUser extends BaseEntity
22 22
     private static final long serialVersionUID = 1L;
23 23
 
24 24
     /** 用户ID */
25
-    @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
25
+    @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
26 26
     private Long userId;
27 27
 
28 28
     /** 部门ID */

+ 1 - 8
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java

@@ -103,20 +103,13 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
103 103
         {
104 104
             throw new CaptchaException("验证码不能为空");
105 105
         }
106
-        if (StringUtils.isEmpty(uuid))
107
-        {
108
-            throw new CaptchaException("uuid不能为空");
109
-        }
110
-        
111
-        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
106
+        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
112 107
         String captcha = redisService.getCacheObject(verifyKey);
113 108
         if (captcha == null)
114 109
         {
115 110
             throw new CaptchaException("验证码已失效");
116 111
         }
117
-
118 112
         redisService.deleteObject(verifyKey);
119
-
120 113
         if (!code.equalsIgnoreCase(captcha))
121 114
         {
122 115
             throw new CaptchaException("验证码错误");

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java

@@ -199,6 +199,8 @@ public class SysUserController extends BaseController
199 199
     @PostMapping
200 200
     public AjaxResult add(@Validated @RequestBody SysUser user)
201 201
     {
202
+        deptService.checkDeptDataScope(user.getDeptId());
203
+        roleService.checkRoleDataScope(user.getRoleIds());
202 204
         if (!userService.checkUserNameUnique(user))
203 205
         {
204 206
             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
@@ -226,6 +228,8 @@ public class SysUserController extends BaseController
226 228
     {
227 229
         userService.checkUserAllowed(user);
228 230
         userService.checkUserDataScope(user.getUserId());
231
+        deptService.checkDeptDataScope(user.getDeptId());
232
+        roleService.checkRoleDataScope(user.getRoleIds());
229 233
         if (!userService.checkUserNameUnique(user))
230 234
         {
231 235
             return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
@@ -310,6 +314,7 @@ public class SysUserController extends BaseController
310 314
     public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
311 315
     {
312 316
         userService.checkUserDataScope(userId);
317
+        roleService.checkRoleDataScope(roleIds);
313 318
         userService.insertUserAuth(userId, roleIds);
314 319
         return success();
315 320
     }

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java

@@ -85,9 +85,9 @@ public interface ISysRoleService
85 85
     /**
86 86
      * 校验角色是否有数据权限
87 87
      * 
88
-     * @param roleId 角色id
88
+     * @param roleIds 角色id
89 89
      */
90
-    public void checkRoleDataScope(Long roleId);
90
+    public void checkRoleDataScope(Long... roleIds);
91 91
 
92 92
     /**
93 93
      * 通过角色ID查询角色使用数量

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -190,7 +190,7 @@ public class SysDeptServiceImpl implements ISysDeptService
190 190
     @Override
191 191
     public void checkDeptDataScope(Long deptId)
192 192
     {
193
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
193
+        if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId))
194 194
         {
195 195
             SysDept dept = new SysDept();
196 196
             dept.setDeptId(deptId);

+ 10 - 7
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java

@@ -192,19 +192,22 @@ public class SysRoleServiceImpl implements ISysRoleService
192 192
     /**
193 193
      * 校验角色是否有数据权限
194 194
      * 
195
-     * @param roleId 角色id
195
+     * @param roleIds 角色id
196 196
      */
197 197
     @Override
198
-    public void checkRoleDataScope(Long roleId)
198
+    public void checkRoleDataScope(Long... roleIds)
199 199
     {
200 200
         if (!SysUser.isAdmin(SecurityUtils.getUserId()))
201 201
         {
202
-            SysRole role = new SysRole();
203
-            role.setRoleId(roleId);
204
-            List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
205
-            if (StringUtils.isEmpty(roles))
202
+            for (Long roleId : roleIds)
206 203
             {
207
-                throw new ServiceException("没有权限访问角色数据!");
204
+                SysRole role = new SysRole();
205
+                role.setRoleId(roleId);
206
+                List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
207
+                if (StringUtils.isEmpty(roles))
208
+                {
209
+                    throw new ServiceException("没有权限访问角色数据!");
210
+                }
208 211
             }
209 212
         }
210 213
     }

+ 7 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -28,6 +28,7 @@ import com.ruoyi.system.mapper.SysUserMapper;
28 28
 import com.ruoyi.system.mapper.SysUserPostMapper;
29 29
 import com.ruoyi.system.mapper.SysUserRoleMapper;
30 30
 import com.ruoyi.system.service.ISysConfigService;
31
+import com.ruoyi.system.service.ISysDeptService;
31 32
 import com.ruoyi.system.service.ISysUserService;
32 33
 
33 34
 /**
@@ -59,6 +60,9 @@ public class SysUserServiceImpl implements ISysUserService
59 60
     private ISysConfigService configService;
60 61
 
61 62
     @Autowired
63
+    private ISysDeptService deptService;
64
+
65
+    @Autowired
62 66
     protected Validator validator;
63 67
 
64 68
     /**
@@ -489,7 +493,6 @@ public class SysUserServiceImpl implements ISysUserService
489 493
         int failureNum = 0;
490 494
         StringBuilder successMsg = new StringBuilder();
491 495
         StringBuilder failureMsg = new StringBuilder();
492
-        String password = configService.selectConfigByKey("sys.user.initPassword");
493 496
         for (SysUser user : userList)
494 497
         {
495 498
             try
@@ -499,6 +502,8 @@ public class SysUserServiceImpl implements ISysUserService
499 502
                 if (StringUtils.isNull(u))
500 503
                 {
501 504
                     BeanValidators.validateWithException(validator, user);
505
+                    deptService.checkDeptDataScope(user.getDeptId());
506
+                    String password = configService.selectConfigByKey("sys.user.initPassword");
502 507
                     user.setPassword(SecurityUtils.encryptPassword(password));
503 508
                     user.setCreateBy(operName);
504 509
                     userMapper.insertUser(user);
@@ -510,6 +515,7 @@ public class SysUserServiceImpl implements ISysUserService
510 515
                     BeanValidators.validateWithException(validator, user);
511 516
                     checkUserAllowed(u);
512 517
                     checkUserDataScope(u.getUserId());
518
+                    deptService.checkDeptDataScope(user.getDeptId());
513 519
                     user.setUserId(u.getUserId());
514 520
                     user.setUpdateBy(operName);
515 521
                     userMapper.updateUser(user);