提交 dfd22d3d authored 作者: fit2cloud-chenyw's avatar fit2cloud-chenyw

fix: 组织授权级联缓存

上级 4c9aeeee
package io.dataease.plugins.server; package io.dataease.plugins.server;
import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.commons.constants.AuthConstants; import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.AuthUtils;
...@@ -20,6 +19,8 @@ import io.dataease.plugins.xpack.auth.service.AuthXpackService; ...@@ -20,6 +19,8 @@ import io.dataease.plugins.xpack.auth.service.AuthXpackService;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@ApiIgnore @ApiIgnore
@RequestMapping("/plugin/auth") @RequestMapping("/plugin/auth")
@RestController @RestController
...@@ -74,11 +75,31 @@ public class XAuthServer { ...@@ -74,11 +75,31 @@ public class XAuthServer {
} }
String authCacheKey = getAuthCacheKey(request); String authCacheKey = getAuthCacheKey(request);
if (StringUtils.isNotBlank(authCacheKey)) { if (StringUtils.isNotBlank(authCacheKey)) {
CacheUtils.remove(authCacheKey, request.getAuthTargetType() + request.getAuthTarget()); if (StringUtils.equals("dept", request.getAuthTargetType())) {
List<String> authTargets = getAuthModels(request.getAuthTarget(), request.getAuthTargetType(),
user.getUserId(), user.getIsAdmin());
if (CollectionUtils.isNotEmpty(authTargets)) {
authTargets.forEach(deptId -> {
CacheUtils.remove(authCacheKey, request.getAuthTargetType() + deptId);
});
}
} else {
CacheUtils.remove(authCacheKey, request.getAuthTargetType() + request.getAuthTarget());
}
} }
}); });
} }
private List<String> getAuthModels(String id, String type, Long userId, Boolean isAdmin) {
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
List<XpackVAuthModelDTO> vAuthModelDTOS = sysAuthService
.searchAuthModelTree(new XpackBaseTreeRequest(id, type, "children"), userId, isAdmin);
List<String> authSources = Optional.ofNullable(vAuthModelDTOS).orElse(new ArrayList<>()).stream()
.map(XpackVAuthModelDTO::getId)
.collect(Collectors.toList());
return authSources;
}
private String getAuthCacheKey(XpackSysAuthRequest request) { private String getAuthCacheKey(XpackSysAuthRequest request) {
if (CollectionUtils.isEmpty(cacheTypes)) { if (CollectionUtils.isEmpty(cacheTypes)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论