feat(2227-permissionQuery):修复免授权
This commit is contained in:
parent
3940b0c394
commit
346dab8247
@ -6,6 +6,7 @@ import cn.axzo.basics.common.util.NumberUtil;
|
|||||||
import cn.axzo.basics.common.util.TreeUtil;
|
import cn.axzo.basics.common.util.TreeUtil;
|
||||||
import cn.axzo.framework.auth.domain.TerminalInfo;
|
import cn.axzo.framework.auth.domain.TerminalInfo;
|
||||||
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
|
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
|
||||||
|
import cn.axzo.tyr.client.common.enums.FeatureResourceAuthType;
|
||||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||||
import cn.axzo.tyr.client.model.base.WorkspaceOUPair;
|
import cn.axzo.tyr.client.model.base.WorkspaceOUPair;
|
||||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||||
@ -235,13 +236,19 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<Long> buildNormalPermission(RoleWithFeature role, List<WorkspaceFeatureRelation> allFeatures) {
|
private List<Long> buildNormalPermission(RoleWithFeature role, List<WorkspaceFeatureRelation> allFeatures) {
|
||||||
|
Set<Long> featureIds = featureResourceService.permissionQuery(ResourcePermissionQueryDTO.builder()
|
||||||
|
.authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode()))
|
||||||
|
.build())
|
||||||
|
.stream()
|
||||||
|
.map(ResourcePermission::getId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
//普通角色:角色同类型的租户产品权限已分配 且角色上已分配 + 免授权
|
//普通角色:角色同类型的租户产品权限已分配 且角色上已分配 + 免授权
|
||||||
Set<Long> roleFeatures = role.getFeatureIds();
|
Set<Long> roleFeatures = role.getFeatureIds();
|
||||||
return allFeatures.stream()
|
return allFeatures.stream()
|
||||||
.filter(f -> Objects.equals(f.getProductUnitType(), role.getProductUnitType())
|
.filter(f -> Objects.equals(f.getProductUnitType(), role.getProductUnitType())
|
||||||
|| !NumberUtil.isPositiveNumber(role.getProductUnitType()))
|
|| !NumberUtil.isPositiveNumber(role.getProductUnitType()))
|
||||||
.map(WorkspaceFeatureRelation::getFeatureId)
|
.map(WorkspaceFeatureRelation::getFeatureId)
|
||||||
.filter(id -> roleFeatures.contains(id) || featureResourceService.isAuthFree(id))
|
.filter(id -> roleFeatures.contains(id) || featureIds.contains(id))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,6 +44,7 @@ import java.util.Comparator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@ -118,16 +119,12 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
//load from DB
|
//load from DB
|
||||||
String[] featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder()
|
Set<Long> featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder()
|
||||||
.authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode()))
|
.authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode()))
|
||||||
.build())
|
.build())
|
||||||
.stream()
|
.stream()
|
||||||
.map(ResourcePermission::getId).map(String::valueOf)
|
.map(ResourcePermission::getId).collect(Collectors.toSet());
|
||||||
.toArray(String[]::new);
|
return false;
|
||||||
RedisClient.SetOps.sAdd(KEY_AUTH_FREE, featureIds);
|
|
||||||
RedisClient.KeyOps.expire(KEY_AUTH_FREE, 120L, TimeUnit.MINUTES);
|
|
||||||
|
|
||||||
return RedisClient.SetOps.sIsMember(KEY_AUTH_FREE, featureId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user