Commit 09024262dbc30d9aa9f13489cd289d28b52436e4

Authored by puff
1 parent bbcbf38a

feat:完成用户角色权限的关联,拥有脱敏白名单用户可以看到脱敏前前的数据,白名单之外的看到的数据都是脱敏后的数据

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 }
... ...