Commit 11612ff4 by wangzhen

Refactor the classes of the RBAC to PermissionService.

1 parent ef63ef1b
package com.myxrk.rbac.aspect; package com.myxrk.rbac.aspect;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.CaseFormat; import com.google.common.base.CaseFormat;
import com.myxrk.rbac.annotation.DataGrid; import com.myxrk.rbac.annotation.DataGrid;
import com.myxrk.rbac.dao.SysDataGridMapper;
import com.myxrk.rbac.dao.SysRoleDataGridMapper;
import com.myxrk.rbac.dao.SysUserMapper;
import com.myxrk.rbac.dao.SysUserRoleMapper;
import com.myxrk.rbac.po.SysDataGrid;
import com.myxrk.rbac.po.SysRoleDataGrid;
import com.myxrk.rbac.po.SysUser; import com.myxrk.rbac.po.SysUser;
import com.myxrk.rbac.po.SysUserRole;
import com.myxrk.rbac.result.Result; import com.myxrk.rbac.result.Result;
import com.myxrk.rbac.service.PermissionService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
...@@ -29,8 +21,6 @@ import java.util.ArrayList; ...@@ -29,8 +21,6 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j @Slf4j
...@@ -41,16 +31,10 @@ public class DataGridMaskAspect { ...@@ -41,16 +31,10 @@ public class DataGridMaskAspect {
private static final String MASK_STR = "---"; private static final String MASK_STR = "---";
private static final String COLUMNS_ID = "id"; private static final String COLUMNS_ID = "id";
private final SysUserMapper sysUserMapper; private final PermissionService permissionService;
private final SysUserRoleMapper sysUserRoleMapper;
private final SysRoleDataGridMapper sysRoleDataGridMapper;
private final SysDataGridMapper sysDataGridMapper;
public DataGridMaskAspect(SysUserMapper sysUserMapper, SysUserRoleMapper sysUserRoleMapper, SysRoleDataGridMapper sysRoleDataGridMapper, SysDataGridMapper sysDataGridMapper) { public DataGridMaskAspect(PermissionService permissionService) {
this.sysUserMapper = sysUserMapper; this.permissionService = permissionService;
this.sysUserRoleMapper = sysUserRoleMapper;
this.sysRoleDataGridMapper = sysRoleDataGridMapper;
this.sysDataGridMapper = sysDataGridMapper;
} }
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping)") @Around("@annotation(org.springframework.web.bind.annotation.GetMapping)")
...@@ -82,13 +66,13 @@ public class DataGridMaskAspect { ...@@ -82,13 +66,13 @@ public class DataGridMaskAspect {
String dgKey = dg.value(); String dgKey = dg.value();
// 获取当前用户 // 获取当前用户
SysUser sysUser = getSysUser(); SysUser sysUser = permissionService.getSysUser();
// 获取当前激活角色,激活的角色只能有一个 // 获取当前激活角色,激活的角色只能有一个
Long role = getActiveRole(sysUser); Long role = permissionService.getActiveRole();
// 获取当前激活角色所关联的数据表格列 // 获取当前激活角色所关联的数据表格列
List<String> columns = getColunmsByRoleAndDataGridKey(dgKey, role); List<String> columns = permissionService.getColumnsByRoleAndDataGridKey(dgKey, role);
maskData(data, columns, genericType); maskData(data, columns, genericType);
...@@ -138,24 +122,6 @@ public class DataGridMaskAspect { ...@@ -138,24 +122,6 @@ public class DataGridMaskAspect {
return masks; return masks;
} }
private List<String> getColunmsByRoleAndDataGridKey(String dgKey, Long role) {
SysDataGrid sysDataGrid = sysDataGridMapper.selectOne(Wrappers.query(SysDataGrid.class).eq("dg_key", dgKey));
List<SysRoleDataGrid> sysRoleDataGrids = sysRoleDataGridMapper.selectList(Wrappers.query(SysRoleDataGrid.class).eq("role_id", role).eq("dg_id", sysDataGrid.getId()));
return sysRoleDataGrids.stream()
.flatMap(dataGrid -> Stream.of(dataGrid.getColumns().split(","))).toList();
}
private Long getActiveRole(SysUser sysUser) {
List<SysUserRole> sysUserRole = sysUserRoleMapper.selectList(Wrappers.query(SysUserRole.class).eq("user_id", sysUser.getUserId()));
Set<Long> roles = sysUserRole.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
return roles.iterator().next();
}
private SysUser getSysUser() {
// 获取当前用户
String username = (String) SecurityUtils.getSubject().getPrincipal();
return sysUserMapper.selectOne(Wrappers.query(SysUser.class).eq("username", username));
}
private static Set<String> getTableHeader(Class<?> genericType) { private static Set<String> getTableHeader(Class<?> genericType) {
Set<String> fields = new HashSet<>(); Set<String> fields = new HashSet<>();
......
package com.myxrk.rbac.controller; package com.myxrk.rbac.controller;
import com.myxrk.rbac.annotation.DataGrid; import com.myxrk.rbac.annotation.DataGrid;
import com.myxrk.rbac.dao.SysUserMapper;
import com.myxrk.rbac.po.Employee; import com.myxrk.rbac.po.Employee;
import com.myxrk.rbac.po.SysUser; import com.myxrk.rbac.po.SysUser;
import com.myxrk.rbac.result.Result; import com.myxrk.rbac.result.Result;
import com.myxrk.rbac.service.EmployeeService; import com.myxrk.rbac.service.EmployeeService;
import com.myxrk.rbac.service.SysUserService; import com.myxrk.rbac.service.PermissionService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
...@@ -24,7 +23,7 @@ public class ShiroController { ...@@ -24,7 +23,7 @@ public class ShiroController {
private EmployeeService employeeService; private EmployeeService employeeService;
@Resource @Resource
private SysUserService sysUserService; private PermissionService permissionService;
@GetMapping("/anon") @GetMapping("/anon")
public Result<String> anon() { public Result<String> anon() {
...@@ -83,6 +82,6 @@ public class ShiroController { ...@@ -83,6 +82,6 @@ public class ShiroController {
@DataGrid("dg_sys_user_list_001") @DataGrid("dg_sys_user_list_001")
@GetMapping("/users") @GetMapping("/users")
public Result<SysUser> getUsers() { public Result<SysUser> getUsers() {
return Result.success(sysUserService.getAllUsers()); return Result.success(permissionService.getAllUsers());
} }
} }
package com.myxrk.rbac.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.myxrk.rbac.dao.SysDataGridMapper;
import com.myxrk.rbac.dao.SysRoleDataGridMapper;
import com.myxrk.rbac.dao.SysUserMapper;
import com.myxrk.rbac.dao.SysUserRoleMapper;
import com.myxrk.rbac.po.SysDataGrid;
import com.myxrk.rbac.po.SysRoleDataGrid;
import com.myxrk.rbac.po.SysUser;
import com.myxrk.rbac.po.SysUserRole;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
@Service
public class PermissionService {
private final SysUserMapper sysUserMapper;
private final SysUserRoleMapper sysUserRoleMapper;
private final SysRoleDataGridMapper sysRoleDataGridMapper;
private final SysDataGridMapper sysDataGridMapper;
public PermissionService(SysUserMapper sysUserMapper, SysUserRoleMapper sysUserRoleMapper, SysRoleDataGridMapper sysRoleDataGridMapper, SysDataGridMapper sysDataGridMapper) {
this.sysUserMapper = sysUserMapper;
this.sysUserRoleMapper = sysUserRoleMapper;
this.sysRoleDataGridMapper = sysRoleDataGridMapper;
this.sysDataGridMapper = sysDataGridMapper;
}
public SysUser getSysUser() {
// 获取当前用户
String username = (String) SecurityUtils.getSubject().getPrincipal();
return sysUserMapper.selectOne(Wrappers.query(SysUser.class).eq("username", username));
}
public List<SysUser> getAllUsers() {
return sysUserMapper.selectList(null);
}
public Long getActiveRole() {
List<SysUserRole> sysUserRole = sysUserRoleMapper.selectList(Wrappers.query(SysUserRole.class).eq("user_id", getSysUser().getUserId()));
Set<Long> roles = sysUserRole.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
return roles.iterator().next();
}
public List<String> getColumnsByRoleAndDataGridKey(String dgKey, Long role) {
SysDataGrid sysDataGrid = sysDataGridMapper.selectOne(Wrappers.query(SysDataGrid.class).eq("dg_key", dgKey));
List<SysRoleDataGrid> sysRoleDataGrids = sysRoleDataGridMapper.selectList(Wrappers.query(SysRoleDataGrid.class).eq("role_id", role).eq("dg_id", sysDataGrid.getId()));
return sysRoleDataGrids.stream()
.flatMap(dataGrid -> Stream.of(dataGrid.getColumns().split(","))).toList();
}
}
package com.myxrk.rbac.service;
import com.myxrk.rbac.dao.SysUserMapper;
import com.myxrk.rbac.po.SysUser;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysUserService {
@Resource
private SysUserMapper sysUserMapper;
public List<SysUser> getAllUsers() {
return sysUserMapper.selectList(null);
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!