处理权限异常

This commit is contained in:
yangsb
2024-04-22 14:42:59 +08:00
parent 49f9cb9de5
commit c26fabb760
5 changed files with 43 additions and 3 deletions
@@ -26,6 +26,8 @@ public interface OAuth2TokenApi {
@SuppressWarnings("HttpUrlsUsage")
String URL_CHECK = "http://" + ApiConstants.NAME + PREFIX + "/check";
String URL_ORGAN = "http://" + ApiConstants.NAME + PREFIX + "/getOrganIdByToken";
@PostMapping(PREFIX + "/create")
@Operation(summary = "创建访问令牌")
CommonResult<OAuth2AccessTokenRespDTO> createAccessToken(@Valid @RequestBody OAuth2AccessTokenCreateReqDTO reqDTO);
@@ -49,4 +51,10 @@ public interface OAuth2TokenApi {
CommonResult<OAuth2AccessTokenRespDTO> refreshAccessToken(@RequestParam("refreshToken") String refreshToken,
@RequestParam("clientId") String clientId);
@GetMapping(PREFIX + "/getOrganIdByToken")
@Operation(summary = "通过访问令牌获取组织id")
@Parameter(name = "accessToken", description = "访问令牌", required = true, example = "tudou")
CommonResult<Long> getOrganIdByToken(@RequestParam("accessToken") String accessToken);
}
@@ -63,4 +63,10 @@ public class OAuth2TokenApiImpl implements OAuth2TokenApi {
return success(BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class));
}
@Override
public CommonResult<Long> getOrganIdByToken(String accessToken) {
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.checkAccessToken(accessToken);
return success(accessTokenDO.getOrganId());
}
}
@@ -251,7 +251,9 @@ public class PermissionServiceImpl implements PermissionService {
@Cacheable(value = RedisKeyConstants.MENU_ROLE_ID_LIST, key = "#menuId")
@OrganIgnore
public Set<Long> getMenuRoleIdListByMenuIdFromCache1(Long menuId) {
List<RoleMenuDO> roleMenuDOS = roleMenuMapper.selectList(new LambdaQueryWrapperX<RoleMenuDO>().in(RoleMenuDO::getOrganId, 0l, OrganContextHolder.getOrganId())
//todo 这里应该过滤组织id为0的和自己的
List<RoleMenuDO> roleMenuDOS = roleMenuMapper.selectList(new LambdaQueryWrapperX<RoleMenuDO>()
//.in(RoleMenuDO::getOrganId, 0l, organId)
.eq(RoleMenuDO::getMenuId, menuId)
);
return convertSet(roleMenuDOS, RoleMenuDO::getRoleId);