refactor(permission-check): 兼容检查权限为菜单或页面

This commit is contained in:
zhansihu 2023-10-26 15:22:10 +08:00
parent 9136037865
commit 636f706bf9
3 changed files with 21 additions and 7 deletions

View File

@ -9,8 +9,6 @@ import cn.axzo.tyr.client.model.permission.PermissionPointVO;
import cn.axzo.tyr.server.repository.entity.SaasFeature;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 权限点服务
@ -55,6 +53,6 @@ public interface PermissionPointService {
*/
List<PermissionPointTreeNode> listTreeNodesFlatChild(PermissionPointTreeQueryReq request);
/** 根据code查询权限点, terminal可为空- 直查 **/
List<SaasFeature> listNodeByCode(String featureCode, String terminal);
/** 根据code查询权限点, terminal可为空 **/
List<SaasFeature> listNodeWithChildrenByCode(String featureCode, String terminal);
}

View File

@ -9,6 +9,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import cn.axzo.tyr.client.model.enums.FeatureDataType;
import cn.hutool.core.lang.Opt;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -562,9 +563,24 @@ public class PermissionPointServiceImpl implements PermissionPointService {
}
@Override
public List<SaasFeature> listNodeByCode(String featureCode, String terminal) {
return saasFeatureDao.list(new LambdaQueryWrapper<SaasFeature>()
public List<SaasFeature> listNodeWithChildrenByCode(String featureCode, String terminal) {
List<SaasFeature> currentFeatrureList = saasFeatureDao.list(new LambdaQueryWrapper<SaasFeature>()
.eq(SaasFeature::getFeatureCode, featureCode)
.eq(StrUtil.isNotBlank(terminal), SaasFeature::getTerminal, terminal));
//button过滤减少查询
Set<Long> idsWithoutButton = currentFeatrureList.stream()
.filter(f -> !BUTTON.sameCode(f.getFeatureType()))
.map(SaasFeature::getId)
.collect(Collectors.toSet());
if (CollectionUtil.isEmpty(idsWithoutButton)) {
return currentFeatrureList;
}
String querySql = StrUtil.join(" OR ", idsWithoutButton.stream().map(id -> "FIND_IN_SET('" + id + "', path)"));
List<SaasFeature> children = saasFeatureDao.list(new LambdaQueryWrapper<SaasFeature>()
.eq(StrUtil.isNotBlank(terminal), SaasFeature::getTerminal, terminal)
.apply(querySql));
currentFeatrureList.addAll(children);
return currentFeatrureList;
}
}

View File

@ -533,7 +533,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
result.setWorkspaceId(req.getWorkspaceId());
//code查询权限点信息
List<SaasFeature> features = permissionPointService.listNodeByCode(req.getFeatureCode(), req.getTerminal());
List<SaasFeature> features = permissionPointService.listNodeWithChildrenByCode(req.getFeatureCode(), req.getTerminal());
//权限匹配 - 工作台是否有指定权限
List<SaasFeature> matchedFeature = matchWorkspaceFeature(req.getWorkspaceId(), req.getWorkspaceJoinType(), features);
if (CollectionUtil.isEmpty(matchedFeature)) {