提交 da63c845 编写于 作者: H haoxr

feat: 添加根据角色获取最大数据权限范围方法

上级 f31e1f4d
......@@ -56,6 +56,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
* @param where 当前查询条件
* @return 构建后查询条件
*/
@SneakyThrows
public static Expression dataScopeFilter(String deptAlias, String userAlias, Expression where) {
......@@ -69,20 +70,15 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
userColumnName = userAlias + "." + USER_ID_COLUMN_NAME;
}
// 获取当前用户的数据权限
Integer dataScope = SecurityUtils.getDataScope();
DataScopeEnum dataScopeEnum = IBaseEnum.getEnumByValue(dataScope, DataScopeEnum.class);
Long deptId = null, userId = null;
Long deptId, userId;
String appendSqlStr = null;
switch (dataScopeEnum) {
case DEPT_AND_SUB:
deptId = SecurityUtils.getDeptId();
appendSqlStr = deptColumnName + " IN ( SELECT id FROM sys_dept WHERE id = " + deptId + " or find_in_set( " + deptId + " , tree_path ) )";
case ALL:
break;
case DEPT:
deptId = SecurityUtils.getDeptId();
......@@ -92,15 +88,16 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
userId = SecurityUtils.getUserId();
appendSqlStr = userColumnName + "=" + userId;
break;
// 默认部门及子部门数据权限
default:
deptId = SecurityUtils.getDeptId();
appendSqlStr = deptColumnName + " IN ( SELECT id FROM sys_dept WHERE id = " + deptId + " or find_in_set( " + deptId + " , tree_path ) )";
break;
}
Expression appendExpression = null;
if (StrUtil.isNotBlank(appendSqlStr)) {
try {
appendExpression = CCJSqlParserUtil.parseCondExpression(appendSqlStr);
} catch (JSQLParserException e) {
throw new RuntimeException(e);
}
appendExpression = CCJSqlParserUtil.parseCondExpression(appendSqlStr);
}
if (appendExpression == null) {
......
......@@ -52,6 +52,6 @@ public class UserAuthInfo {
/**
* 数据权限范围
*/
private Set<Integer> dataScopes;
private Integer dataScope;
}
......@@ -26,6 +26,7 @@ import com.youlai.system.pojo.bo.UserFormBO;
import com.youlai.system.pojo.bo.UserBO;
import com.youlai.system.pojo.query.UserPageQuery;
import com.youlai.system.pojo.service.SysMenuService;
import com.youlai.system.pojo.service.SysRoleService;
import com.youlai.system.pojo.service.SysUserRoleService;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserExportVO;
......@@ -61,8 +62,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private final SysUserRoleService userRoleService;
private final UserImportListener userImportListener;
private final UserConverter userConverter;
private final SysMenuService menuService;
private final SysRoleService roleService;
/**
* 获取用户分页列表
*
......@@ -212,6 +215,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if(CollectionUtil.isNotEmpty(roles)){
Set<String> perms = menuService.listRolePerms(roles);
userAuthInfo.setPerms(perms);
// 根据角色获取范围最大的数据权限
Integer dataScope=
}
return userAuthInfo;
}
......
......@@ -86,9 +86,6 @@
<collection property="roles" ofType="string" javaType="java.util.Set">
<result column="roleCode"></result>
</collection>
<collection property="dataScopes" ofType="Integer" javaType="java.util.Set">
<result column="dataScope"></result>
</collection>
</resultMap>
<!-- 根据用户名获取认证信息 -->
......@@ -100,8 +97,7 @@
t1.PASSWORD,
t1.STATUS,
t1.dept_id deptId,
t3.CODE roleCode,
t3.data_scope dataScope
t3.CODE roleCode
FROM
sys_user t1
LEFT JOIN sys_user_role t2 ON t2.user_id = t1.id
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册