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.framework.auth.domain.TerminalInfo;
|
||||
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.model.base.WorkspaceOUPair;
|
||||
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) {
|
||||
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();
|
||||
return allFeatures.stream()
|
||||
.filter(f -> Objects.equals(f.getProductUnitType(), role.getProductUnitType())
|
||||
|| !NumberUtil.isPositiveNumber(role.getProductUnitType()))
|
||||
.map(WorkspaceFeatureRelation::getFeatureId)
|
||||
.filter(id -> roleFeatures.contains(id) || featureResourceService.isAuthFree(id))
|
||||
.filter(id -> roleFeatures.contains(id) || featureIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.Function;
|
||||
@ -118,16 +119,12 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
||||
}
|
||||
|
||||
//load from DB
|
||||
String[] featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder()
|
||||
Set<Long> featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder()
|
||||
.authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode()))
|
||||
.build())
|
||||
.stream()
|
||||
.map(ResourcePermission::getId).map(String::valueOf)
|
||||
.toArray(String[]::new);
|
||||
RedisClient.SetOps.sAdd(KEY_AUTH_FREE, featureIds);
|
||||
RedisClient.KeyOps.expire(KEY_AUTH_FREE, 120L, TimeUnit.MINUTES);
|
||||
|
||||
return RedisClient.SetOps.sIsMember(KEY_AUTH_FREE, featureId);
|
||||
.map(ResourcePermission::getId).collect(Collectors.toSet());
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user