diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java index 7ebfe9cb..368f705f 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java @@ -64,13 +64,6 @@ public class IdentityAuthReq { /** 是否使用缓存 - 默认true **/ @Builder.Default private boolean useCache = true; - - /** - * 权限点类型(0:saas_feature,1:saas_feature_resource) - * 为了兼容第三方调用查询用户的权限点,会把新旧权限点都查询出来,灰度端历史版本由使用方传入版本 - */ - private Integer type; - public IdentityAuthRes toEmpty() { IdentityAuthRes result = new IdentityAuthRes(); result.setIdentity(this.getIdentityId()); diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/IdentityAuthRes.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/IdentityAuthRes.java index 6ab3c6d6..07a46c40 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/IdentityAuthRes.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/IdentityAuthRes.java @@ -61,6 +61,11 @@ public class IdentityAuthRes { // private FeatureType featureType; private String terminal; + + /** + * 应用范围(租户类型):1:企业工作台 2;项目工作台 + */ + private Long workspaceType; } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java index 634f4753..6d32e0d7 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java @@ -232,7 +232,6 @@ public class SaasPageElementServiceImpl implements SaasPageElementService { .workspaceOusPairs(Lists.newArrayList(IdentityAuthReq.WorkspaceOuPair.builder().ouId(request.getOuId()).workspaceId(request.getWorkspaceId()).build())) .terminal(Lists.newArrayList(request.getTerminal())) .featureCode(resultRelations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toSet())) - .type(SaasPgroupPermissionRelation.NEW_FEATURE) .build()); if (Objects.isNull(res) || CollectionUtils.isEmpty(res.getPermissions())) { return null; 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 5b339650..50608b10 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 @@ -12,6 +12,7 @@ import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.common.enums.WorkspaceJoinType; import cn.axzo.tyr.client.model.enums.DelegatedType; import cn.axzo.tyr.client.model.enums.IdentityType; +import cn.axzo.tyr.client.model.enums.WorkspaceTypeCodeEnum; import cn.axzo.tyr.client.model.permission.PermissionPointListQueryRequest; import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; import cn.axzo.tyr.client.model.product.ProductFeatureRelationVO; @@ -386,7 +387,6 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { .supplyAsync(TraceSupplier.create(() -> { WorkspaceProductService.WorkspaceProductParam workspaceProductParam = WorkspaceProductService.WorkspaceProductParam.builder() .workspaceIds(realWorkspaceId) - .type(identityAuthReq.getType()) .build(); return workspaceProductService.listWorkspaceProduct(workspaceProductParam); }), executor); @@ -492,6 +492,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { .featureCode(featureCode) .featureId(e.getId()) .terminal(e.getTerminal()) + .workspaceType(e.getWorkspaceType()) .build()) .collect(Collectors.toList())) .flatMap(Collection::stream) @@ -684,7 +685,6 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder() .roleIds(Lists.newArrayList(roleIds)) .needPermissionRelation(true) - .type(identityAuthReq.getType()) .build(); Map saasRoleRes = roleService.list(listSaasRoleParam).stream() .collect(Collectors.toMap(SaasRoleRes::getId, Function.identity())); @@ -935,12 +935,6 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { req.setFeatureCode(featureCodeUtil.resolveFeatureCode(req.getFeatureCode())); - // 因为目前只有/yoke/webApi/profile/user/v3/application接口会传入featureId,使用的是app端,所以这里只需要查询saas_feature的权限点 - // 以为下面要根据featureId进行匹配,为了解决saas_feature和saas_feature_resource有冲突的数据,必须给type - if (!CollectionUtils.isEmpty(req.getFeatureId())) { - req.setType(OLD_FEATURE); - } - boolean notUseCache = !req.isUseCache() || CollectionUtil.isNotEmpty(req.getSpecifyRoleIds()) || permissionCacheService.cacheDisable( @@ -969,9 +963,38 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { return result; } Set terminals = req.getTerminal() == null ? null : new HashSet<>(req.getTerminal()); + + Set workspaceTypes = Sets.newHashSet(); + // 历史接口会只给NT_CMS_WEB_PROJ、NT_CMS_WEB_ENT_ZB查询,但是为了兼容新老版本的权限,需要补充新版本的项目的权限code + if (!CollectionUtil.isEmpty(terminals)) { + if (terminals.contains("NT_CMS_WEB_PROJ")) { + workspaceTypes.add(Long.valueOf(WorkspaceTypeCodeEnum.GENERAL_PROJECT.getCode())); + } + + if (terminals.contains("NT_CMS_WEB_ENT_ZB")) { + workspaceTypes.add(Long.valueOf(WorkspaceTypeCodeEnum.GENERAL_ENT.getCode())); + } + } permissions.forEach(permission -> { List filterPermission = permission.getPermissionPoint().stream() - .filter(p -> CollectionUtil.isEmpty(terminals) || terminals.contains(p.getTerminal())) + .filter(p -> { + if (CollectionUtil.isEmpty(terminals)) { + return true; + } + + if (terminals.contains(p.getTerminal())) { + return true; + } + + // 历史接口会只给NT_CMS_WEB_PROJ、NT_CMS_WEB_ENT_ZB查询,但是为了兼容新老版本的权限,需要补充新版本的项目的权限code + if (terminals.contains("NT_CMS_WEB_PROJ") || terminals.contains("NT_CMS_WEB_ENT_ZB")) { + if (!Objects.equals(p.getTerminal(), "NT_CMS_WEB_GENERAL")) { + return false; + } + return workspaceTypes.contains(p.getWorkspaceType()); + } + return false; + }) .filter(p -> CollectionUtil.isEmpty(req.getFeatureId()) || req.getFeatureId().contains(p.getFeatureId())) .filter(p -> CollectionUtil.isEmpty(req.getFeatureCode()) || req.getFeatureCode().contains(p.getFeatureCode())) .collect(Collectors.toList());