Commit 09024262dbc30d9aa9f13489cd289d28b52436e4
1 parent
bbcbf38a
feat:完成用户角色权限的关联,拥有脱敏白名单用户可以看到脱敏前前的数据,白名单之外的看到的数据都是脱敏后的数据
Showing
3 changed files
with
10 additions
and
53 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/desensitization/plugin/DesensitizationInterceptor.java
... | ... | @@ -4,11 +4,13 @@ package org.jeecg.modules.desensitization.plugin; |
4 | 4 | import cn.hutool.core.util.ObjectUtil; |
5 | 5 | import org.apache.ibatis.executor.resultset.ResultSetHandler; |
6 | 6 | import org.apache.ibatis.plugin.*; |
7 | +import org.apache.shiro.SecurityUtils; | |
7 | 8 | import org.jeecg.common.exception.JeecgBootException; |
8 | 9 | import org.jeecg.modules.desensitization.annotation.SensitiveField; |
9 | 10 | import org.jeecg.modules.desensitization.enums.SensitiveTypeEnums; |
10 | 11 | import org.jeecg.modules.desensitization.strategy.SensitiveContext; |
11 | 12 | import org.jeecg.modules.desensitization.strategy.SensitiveStrategy; |
13 | +import org.jeecg.modules.system.entity.SysUserRole; | |
12 | 14 | import org.jeecg.modules.system.service.ISysRoleService; |
13 | 15 | import org.jeecg.utils.HuahengJwtUtil; |
14 | 16 | import org.reflections.ReflectionUtils; |
... | ... | @@ -24,6 +26,8 @@ import java.lang.reflect.Field; |
24 | 26 | import java.util.*; |
25 | 27 | import java.util.concurrent.ConcurrentHashMap; |
26 | 28 | |
29 | +import static org.jeecg.utils.HuahengJwtUtil.getRolesByToken; | |
30 | + | |
27 | 31 | |
28 | 32 | /** |
29 | 33 | * 基于拦截器对数据脱敏 |
... | ... | @@ -38,8 +42,6 @@ import java.util.concurrent.ConcurrentHashMap; |
38 | 42 | @Order(-1) |
39 | 43 | public class DesensitizationInterceptor implements Interceptor { |
40 | 44 | |
41 | -// @Resource | |
42 | -// private static ISysRoleService iSysRoleService; | |
43 | 45 | |
44 | 46 | private static final Logger log = LoggerFactory.getLogger(DesensitizationInterceptor.class); |
45 | 47 | |
... | ... | @@ -90,8 +92,6 @@ public class DesensitizationInterceptor implements Interceptor { |
90 | 92 | } |
91 | 93 | } |
92 | 94 | } |
93 | - String userName = HuahengJwtUtil.getCurrentOperator(); | |
94 | - | |
95 | 95 | for (Handler handler : handlerList) { |
96 | 96 | handler.accept(object); |
97 | 97 | } |
... | ... | @@ -131,20 +131,11 @@ public class DesensitizationInterceptor implements Interceptor { |
131 | 131 | SensitiveTypeEnums typeEnums = annotation.value(); |
132 | 132 | String fillValue = annotation.fillValue(); |
133 | 133 | Object o1 = field.get(o); |
134 | - // 获取当前用户角色权限,管理员不脱敏,其他人员则只能查看加密后的数据 | |
135 | - // 获取当前登陆用户 | |
136 | -// iSysRoleService.desensitizationByUserName(HuahengJwtUtil.getCurrentOperator()); | |
137 | -// if(!iSysRoleService.desensitizationByUserName(HuahengJwtUtil.getCurrentOperator())){ | |
138 | -// SensitiveStrategy sensitiveStrategy = SensitiveContext.get(typeEnums); | |
139 | -// String s = sensitiveStrategy.handle(o1, fillValue); | |
140 | -// field.set(o, s); | |
141 | -// } | |
142 | - | |
143 | -// log.info("加密之前数据 = {}",o1); | |
144 | - SensitiveStrategy sensitiveStrategy = SensitiveContext.get(typeEnums); | |
145 | - String s = sensitiveStrategy.handle(o1, fillValue); | |
146 | -// log.info("加密之后数据 = {}",s); | |
147 | - field.set(o, s); | |
134 | + if(!SecurityUtils.getSubject().hasRole("desensitization")){ | |
135 | + SensitiveStrategy sensitiveStrategy = SensitiveContext.get(typeEnums); | |
136 | + String s = sensitiveStrategy.handle(o1, fillValue); | |
137 | + field.set(o, s); | |
138 | + } | |
148 | 139 | } |
149 | 140 | } |
150 | 141 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysRoleService.java
... | ... | @@ -45,12 +45,4 @@ public interface ISysRoleService extends IService<SysRole> { |
45 | 45 | * @return |
46 | 46 | */ |
47 | 47 | public SysRole getRoleByName(String roleName); |
48 | - | |
49 | - /** | |
50 | - * 根据用户名获取角色列表 | |
51 | - * @param userName | |
52 | - * @return | |
53 | - */ | |
54 | - public boolean desensitizationByUserName(String userName); | |
55 | - | |
56 | 48 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysRoleServiceImpl.java
... | ... | @@ -106,32 +106,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl |
106 | 106 | public SysRole getRoleByName(String roleName) { |
107 | 107 | LambdaQueryWrapper<SysRole> roleLambdaQueryWrapper = Wrappers.lambdaQuery(); |
108 | 108 | roleLambdaQueryWrapper.eq(SysRole::getRoleName, roleName); |
109 | - SysRole role = getOne(roleLambdaQueryWrapper); | |
110 | - return role; | |
111 | - } | |
112 | - | |
113 | - public boolean desensitizationByUserName(String userName){ | |
114 | - LambdaQueryWrapper<SysRole> roleLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
115 | - roleLambdaQueryWrapper.eq(SysRole::getRoleCode,"desensitization"); | |
116 | - SysRole sysRole = getOne(roleLambdaQueryWrapper); | |
117 | - if(ObjectUtil.isEmpty(sysRole)){ | |
118 | - return false; | |
119 | - } | |
120 | - LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
121 | - sysUserLambdaQueryWrapper.eq(SysUser::getUsername,userName); | |
122 | - SysUser sysUser = iSysUserService.getOne(sysUserLambdaQueryWrapper); | |
123 | - | |
124 | - LambdaQueryWrapper<SysUserRole> sysUserRoleLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
125 | - sysUserRoleLambdaQueryWrapper.eq(SysUserRole::getRoleId,sysRole.getId()); | |
126 | - List<SysUserRole> sysUserRoleList = iSysUserRoleService.list(sysUserRoleLambdaQueryWrapper); | |
127 | - | |
128 | - boolean flag = false; | |
129 | - for (SysUserRole sysUserRole : sysUserRoleList){ | |
130 | - if(sysUserRole.getUserId().equals(sysUser.getId())){ | |
131 | - flag = true; | |
132 | - break; | |
133 | - } | |
134 | - } | |
135 | - return flag; | |
109 | + return getOne(roleLambdaQueryWrapper); | |
136 | 110 | } |
137 | 111 | } |
... | ... |