作者 RuoYi

修复角色禁用权限不失效问题(IAA8ZX)

@@ -21,6 +21,9 @@ public class UserConstants @@ -21,6 +21,9 @@ public class UserConstants
21 /** 用户封禁状态 */ 21 /** 用户封禁状态 */
22 public static final String USER_DISABLE = "1"; 22 public static final String USER_DISABLE = "1";
23 23
  24 + /** 角色正常状态 */
  25 + public static final String ROLE_NORMAL = "0";
  26 +
24 /** 角色封禁状态 */ 27 /** 角色封禁状态 */
25 public static final String ROLE_DISABLE = "1"; 28 public static final String ROLE_DISABLE = "1";
26 29
@@ -7,6 +7,7 @@ import org.aspectj.lang.annotation.Aspect; @@ -7,6 +7,7 @@ import org.aspectj.lang.annotation.Aspect;
7 import org.aspectj.lang.annotation.Before; 7 import org.aspectj.lang.annotation.Before;
8 import org.springframework.stereotype.Component; 8 import org.springframework.stereotype.Component;
9 import com.ruoyi.common.annotation.DataScope; 9 import com.ruoyi.common.annotation.DataScope;
  10 +import com.ruoyi.common.constant.UserConstants;
10 import com.ruoyi.common.core.domain.BaseEntity; 11 import com.ruoyi.common.core.domain.BaseEntity;
11 import com.ruoyi.common.core.domain.entity.SysRole; 12 import com.ruoyi.common.core.domain.entity.SysRole;
12 import com.ruoyi.common.core.domain.entity.SysUser; 13 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -73,8 +74,7 @@ public class DataScopeAspect @@ -73,8 +74,7 @@ public class DataScopeAspect
73 if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) 74 if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
74 { 75 {
75 String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext()); 76 String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
76 - dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),  
77 - controllerDataScope.userAlias(), permission); 77 + dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias(), permission);
78 } 78 }
79 } 79 }
80 } 80 }
@@ -94,7 +94,7 @@ public class DataScopeAspect @@ -94,7 +94,7 @@ public class DataScopeAspect
94 List<String> conditions = new ArrayList<String>(); 94 List<String> conditions = new ArrayList<String>();
95 List<String> scopeCustomIds = new ArrayList<String>(); 95 List<String> scopeCustomIds = new ArrayList<String>();
96 user.getRoles().forEach(role -> { 96 user.getRoles().forEach(role -> {
97 - if (DATA_SCOPE_CUSTOM.equals(role.getDataScope()) && StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) 97 + if (DATA_SCOPE_CUSTOM.equals(role.getDataScope()) && StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL) && StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
98 { 98 {
99 scopeCustomIds.add(Convert.toStr(role.getRoleId())); 99 scopeCustomIds.add(Convert.toStr(role.getRoleId()));
100 } 100 }
@@ -103,7 +103,7 @@ public class DataScopeAspect @@ -103,7 +103,7 @@ public class DataScopeAspect
103 for (SysRole role : user.getRoles()) 103 for (SysRole role : user.getRoles())
104 { 104 {
105 String dataScope = role.getDataScope(); 105 String dataScope = role.getDataScope();
106 - if (conditions.contains(dataScope)) 106 + if (conditions.contains(dataScope) || StringUtils.equals(role.getStatus(), UserConstants.ROLE_DISABLE))
107 { 107 {
108 continue; 108 continue;
109 } 109 }
@@ -6,8 +6,10 @@ import java.util.Set; @@ -6,8 +6,10 @@ import java.util.Set;
6 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Component; 7 import org.springframework.stereotype.Component;
8 import org.springframework.util.CollectionUtils; 8 import org.springframework.util.CollectionUtils;
  9 +import com.ruoyi.common.constant.UserConstants;
9 import com.ruoyi.common.core.domain.entity.SysRole; 10 import com.ruoyi.common.core.domain.entity.SysRole;
10 import com.ruoyi.common.core.domain.entity.SysUser; 11 import com.ruoyi.common.core.domain.entity.SysUser;
  12 +import com.ruoyi.common.utils.StringUtils;
11 import com.ruoyi.system.service.ISysMenuService; 13 import com.ruoyi.system.service.ISysMenuService;
12 import com.ruoyi.system.service.ISysRoleService; 14 import com.ruoyi.system.service.ISysRoleService;
13 15
@@ -68,9 +70,12 @@ public class SysPermissionService @@ -68,9 +70,12 @@ public class SysPermissionService
68 // 多角色设置permissions属性,以便数据权限匹配权限 70 // 多角色设置permissions属性,以便数据权限匹配权限
69 for (SysRole role : roles) 71 for (SysRole role : roles)
70 { 72 {
71 - Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());  
72 - role.setPermissions(rolePerms);  
73 - perms.addAll(rolePerms); 73 + if (StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL))
  74 + {
  75 + Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
  76 + role.setPermissions(rolePerms);
  77 + perms.addAll(rolePerms);
  78 + }
74 } 79 }
75 } 80 }
76 else 81 else