Commit 11612ff4 by wangzhen

Refactor the classes of the RBAC to PermissionService.

1 parent ef63ef1b
package com.myxrk.rbac.aspect;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.CaseFormat;
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.SysUserRole;
import com.myxrk.rbac.result.Result;
import com.myxrk.rbac.service.PermissionService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
......@@ -29,8 +21,6 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
......@@ -41,16 +31,10 @@ public class DataGridMaskAspect {
private static final String MASK_STR = "---";
private static final String COLUMNS_ID = "id";
private final SysUserMapper sysUserMapper;
private final SysUserRoleMapper sysUserRoleMapper;
private final SysRoleDataGridMapper sysRoleDataGridMapper;
private final SysDataGridMapper sysDataGridMapper;
private final PermissionService permissionService;
public DataGridMaskAspect(SysUserMapper sysUserMapper, SysUserRoleMapper sysUserRoleMapper, SysRoleDataGridMapper sysRoleDataGridMapper, SysDataGridMapper sysDataGridMapper) {
this.sysUserMapper = sysUserMapper;
this.sysUserRoleMapper = sysUserRoleMapper;
this.sysRoleDataGridMapper = sysRoleDataGridMapper;
this.sysDataGridMapper = sysDataGridMapper;
public DataGridMaskAspect(PermissionService permissionService) {
this.permissionService = permissionService;
}
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping)")
......@@ -82,13 +66,13 @@ public class DataGridMaskAspect {
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);
......@@ -138,24 +122,6 @@ public class DataGridMaskAspect {
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) {
Set<String> fields = new HashSet<>();
......
package com.myxrk.rbac.controller;
import com.myxrk.rbac.annotation.DataGrid;
import com.myxrk.rbac.dao.SysUserMapper;
import com.myxrk.rbac.po.Employee;
import com.myxrk.rbac.po.SysUser;
import com.myxrk.rbac.result.Result;
import com.myxrk.rbac.service.EmployeeService;
import com.myxrk.rbac.service.SysUserService;
import com.myxrk.rbac.service.PermissionService;
import jakarta.annotation.Resource;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
......@@ -24,7 +23,7 @@ public class ShiroController {
private EmployeeService employeeService;
@Resource
private SysUserService sysUserService;
private PermissionService permissionService;
@GetMapping("/anon")
public Result<String> anon() {
......@@ -83,6 +82,6 @@ public class ShiroController {
@DataGrid("dg_sys_user_list_001")
@GetMapping("/users")
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!