SysRoleService.list() 非管理员查询角色列表时不应该自动加入部门id限制条件
版本:renren-security 2.1.0企业版 |
开发环境:不相关 |
list实现中的getWrapper调用会去查询sys_role_data_scope表,并将一个dept_id列表加入到sys_role表查询条件中(where in …),但发现sys_role表在2.1.0版本并不会保存dept_id,此列均为null,因此会导致查询不到任何结果。
建议移除标注为:“//普通管理员,只能查询所属部门及子部门的数据”的72~77行
推测原因:上述代码是改为使用sys_role_data_scope来管理数据权限之前的设计
相关SQL:
SELECT id,name,remark,dept_id,updater,update_date,home_page,creator,create_date FROM sys_role WHERE id IN (1114810433) AND dept_id IN (1067246875, 1067246875, 1067246875)
相关代码: security-enterprise/renren-admin/src/main/java/io/renren/modules/sys/service/impl/SysRoleServiceImpl.java
@Override
public List<SysRoleDTO> list(Map<String, Object> params) {
List<SysRoleEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, SysRoleDTO.class);
}
private QueryWrapper<SysRoleEntity> getWrapper(Map<String, Object> params){
String name = (String)params.get("name");
QueryWrapper<SysRoleEntity> wrapper = new QueryWrapper<>();
wrapper.like(StringUtils.isNotBlank(name), "name", name);
-- remove - start
//普通管理员,只能查询所属部门及子部门的数据
UserDetail user = SecurityUser.getUser();
if(user.getSuperAdmin() == SuperAdminEnum.NO.value()) {
List<Long> deptIdList = sysDeptService.getSubDeptIdList(user.getDeptId());
wrapper.in(deptIdList != null, "dept_id", deptIdList);
}
-- remove - end
return wrapper;
}