新增 角色类型,用于判断登入的不同系统,使用对应的角色权限

This commit is contained in:
furongxin 2024-07-23 17:15:26 +08:00
parent e5d809fba1
commit cda6327ba9
5 changed files with 18 additions and 7 deletions

View File

@ -96,7 +96,11 @@ public class AuthController {
@GetMapping("/get-permission-info")
@Operation(summary = "获取登录用户的权限信息")
public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo(HttpServletRequest request) {
// 获得角色类型
String type = request.getHeader("type");
// 1.1 获得用户信息
AdminUserDO user = userService.getUser(getLoginUserId());
if (user == null) {
@ -109,7 +113,12 @@ public class AuthController {
return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList()));
}
List<RoleDO> roles = roleService.getRoleList(roleIds);
roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())
|| !type.equals(role.getType().toString())); // 移除禁用和类型不一致的角色
if (CollUtil.isEmpty(roles)) {
return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList()));
}
// 1.3 获得菜单列表
Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId));

View File

@ -41,7 +41,7 @@ public class RoleController {
@Operation(summary = "创建角色")
@PreAuthorize("@ss.hasPermission('system:role:create')")
public CommonResult<Long> createRole(@Valid @RequestBody RoleSaveReqVO createReqVO) {
return success(roleService.createRole(createReqVO, null));
return success(roleService.createRole(createReqVO, createReqVO.getType()));
}
@PutMapping("/update")

View File

@ -24,6 +24,10 @@ public class RoleSaveReqVO {
@Schema(description = "角色编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "ADMIN")
private String code;
@Schema(description = "角色类型 字典值 | 参考system_role_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "角色类型不能为空")
private Integer type;
@Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@NotNull(message = "显示顺序不能为空")
private Integer sort;

View File

@ -21,6 +21,7 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
.likeIfPresent(RoleDO::getCode, reqVO.getCode())
.eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime())
.orderByAsc(RoleDO::getType)
.orderByAsc(RoleDO::getSort));
}

View File

@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -15,7 +14,6 @@ import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper;
import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum;
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheEvict;
@ -53,7 +51,7 @@ public class RoleServiceImpl implements RoleService {
validateRoleDuplicate(createReqVO.getName(), createReqVO.getCode(), null);
// 插入到数据库
RoleDO role = BeanUtils.toBean(createReqVO, RoleDO.class);
role.setType(ObjectUtil.defaultIfNull(type, RoleTypeEnum.CUSTOM.getType()));
role.setType(type);
role.setStatus(CommonStatusEnum.ENABLE.getStatus());
role.setDataScope(DataScopeEnum.ALL.getScope()); // 默认可查看所有数据原因是可能一些项目不需要项目权限
roleMapper.insert(role);
@ -172,7 +170,6 @@ public class RoleServiceImpl implements RoleService {
return roleMapper.selectById(id);
}
@Override
public List<RoleDO> getRoleListByStatus(Collection<Integer> statuses) {
return roleMapper.selectListByStatus(statuses);