From 98f76501b99e70e38c058cdcc51747b7f78a0992 Mon Sep 17 00:00:00 2001 From: lilong Date: Thu, 1 Aug 2024 10:42:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:(REQ-2720)=20=E5=A2=9E=E5=8A=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=9F=A5=E8=AF=A2db=E7=9A=84=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/TyrSaasAuthService.java | 6 +++++ .../impl/PermissionQueryServiceImpl.java | 25 +++++++++++++------ .../service/impl/TyrSaasAuthServiceImpl.java | 23 +++++++++++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/TyrSaasAuthService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/TyrSaasAuthService.java index 81ccc0b3..36f8a2b1 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/TyrSaasAuthService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/TyrSaasAuthService.java @@ -66,4 +66,10 @@ public interface TyrSaasAuthService { * @return */ boolean authNewPermission(PermissionCheckReq req); + + /** + * 增加统一的开关:权限是否从数据库查询 + * @return + */ + boolean permissionFromDB(); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java index 07bb8e99..477cfd3a 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java @@ -119,6 +119,7 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { private final WorkspaceProductService workspaceProductService; private final RoleSaasFeatureResourceCacheService roleSaasFeatureResourceCacheService; private final ProductSaasFeatureResourceCacheService productSaasFeatureResourceCacheService; + private final TyrSaasAuthService tyrSaasAuthService; @Qualifier("authExecutor") @@ -436,17 +437,13 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { return workspaceProductService.listWorkspaceProduct(workspaceProductParam); } + + @Override public List treePermission(TreePermissionReq req) { Set allFeatureIds = Sets.newHashSet(); - Set featureIds; - try { - featureIds = listUserPermissionFeatureIds(req); - } catch (Exception ex) { - log.error("查询权限异常,执行降级处理"); - featureIds = listUserPermissionFeatureIdsFromDB(req); - } + Set featureIds = resovlePermission(req); Set defaultFeatureIds = listNotAuthFeatureIds(); allFeatureIds.addAll(featureIds); @@ -506,6 +503,20 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { return result; } + private Set resovlePermission(TreePermissionReq req) { + + if (tyrSaasAuthService.permissionFromDB()) { + return listUserPermissionFeatureIdsFromDB(req); + } + + try { + return listUserPermissionFeatureIds(req); + } catch (Exception ex) { + log.error("查询权限异常,执行降级处理"); + return listUserPermissionFeatureIdsFromDB(req); + } + } + private List filterFeature(List saasFeatureResources) { if (CollectionUtils.isEmpty(saasFeatureResources)) { return Collections.emptyList(); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java index db6bb867..dc26b899 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java @@ -97,6 +97,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -156,6 +157,14 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { private final RolePermissionCacheService rolePermissionCacheService; private final SaasRoleUserRelationMapper saasRoleUserRelationMapper; + @Value("${permission:from:db:false}") + private boolean PERMISSION_FROM_DB; + + @Override + public boolean permissionFromDB() { + return BooleanUtil.isTrue(PERMISSION_FROM_DB); + } + /** * 通过身份查询人员权限 * @@ -525,6 +534,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { @Override public ListIdentityFromPermissionResp listIdentityFromPermission(ListIdentityFromPermissionReq req) { + + if (this.permissionFromDB()) { + return listIdentityFromPermissionFromDB(req); + } + try { return listIdentityFromPermissionResp(req); } catch (Exception ex) { @@ -794,6 +808,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { } private List findIdentityPermission(IdentityAuthReq req) { + + if (this.permissionFromDB()) { + return findIdentityAuth(req).getPermissions(); + } + try { return findIdentityAuthV2(req).getPermissions(); } catch (Exception ex) { @@ -978,6 +997,10 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { @Override public List listWorkspacePermissionIdentity(WorkspacePermissionIdentityReq req) { + if (this.permissionFromDB()) { + return listWorkspacePermissionIdentityFromDB(req); + } + try { Set newFeatureCodes = featureCodeUtil.resolveFeatureCode(Sets.newHashSet(req.getFeatureCodes()));