(fix)(chat)Should check permission when returning data set tree.
Some checks are pending
supersonic CentOS CI / build (21) (push) Waiting to run
supersonic mac CI / build (21) (push) Waiting to run
supersonic ubuntu CI / build (21) (push) Waiting to run
supersonic windows CI / build (21) (push) Waiting to run

This commit is contained in:
jerryjzhang
2025-03-11 15:32:12 +08:00
parent 6f8cf9853b
commit b40cb13740
3 changed files with 16 additions and 10 deletions

View File

@@ -66,8 +66,10 @@ public class ChatConfigController {
} }
@GetMapping("/getDomainDataSetTree") @GetMapping("/getDomainDataSetTree")
public List<ItemResp> getDomainDataSetTree() { public List<ItemResp> getDomainDataSetTree(HttpServletRequest request,
return semanticLayerService.getDomainDataSetTree(); HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return semanticLayerService.getDomainDataSetTree(user);
} }
@GetMapping("/getDataSetSchema/{id}") @GetMapping("/getDataSetSchema/{id}")

View File

@@ -24,7 +24,7 @@ public interface SemanticLayerService {
DataSetSchema getDataSetSchema(Long id); DataSetSchema getDataSetSchema(Long id);
List<ItemResp> getDomainDataSetTree(); List<ItemResp> getDomainDataSetTree(User user);
List<DimensionResp> getDimensions(MetaFilter metaFilter); List<DimensionResp> getDimensions(MetaFilter metaFilter);

View File

@@ -5,6 +5,7 @@ import com.google.common.collect.Sets;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.pojo.QueryColumn;
import com.tencent.supersonic.common.pojo.User; import com.tencent.supersonic.common.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum;
import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
import com.tencent.supersonic.headless.api.pojo.Dimension; import com.tencent.supersonic.headless.api.pojo.Dimension;
@@ -29,10 +30,7 @@ import com.tencent.supersonic.headless.core.utils.ComponentFactory;
import com.tencent.supersonic.headless.server.annotation.S2DataPermission; import com.tencent.supersonic.headless.server.annotation.S2DataPermission;
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService; import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
import com.tencent.supersonic.headless.server.manager.SemanticSchemaManager; import com.tencent.supersonic.headless.server.manager.SemanticSchemaManager;
import com.tencent.supersonic.headless.server.service.DataSetService; import com.tencent.supersonic.headless.server.service.*;
import com.tencent.supersonic.headless.server.service.DimensionService;
import com.tencent.supersonic.headless.server.service.MetricService;
import com.tencent.supersonic.headless.server.service.SchemaService;
import com.tencent.supersonic.headless.server.utils.MetricDrillDownChecker; import com.tencent.supersonic.headless.server.utils.MetricDrillDownChecker;
import com.tencent.supersonic.headless.server.utils.QueryUtils; import com.tencent.supersonic.headless.server.utils.QueryUtils;
import com.tencent.supersonic.headless.server.utils.StatUtils; import com.tencent.supersonic.headless.server.utils.StatUtils;
@@ -59,6 +57,7 @@ public class S2SemanticLayerService implements SemanticLayerService {
private final MetricDrillDownChecker metricDrillDownChecker; private final MetricDrillDownChecker metricDrillDownChecker;
private final KnowledgeBaseService knowledgeBaseService; private final KnowledgeBaseService knowledgeBaseService;
private final MetricService metricService; private final MetricService metricService;
private final DomainService domainService;
private final DimensionService dimensionService; private final DimensionService dimensionService;
private final TranslatorConfig translatorConfig; private final TranslatorConfig translatorConfig;
private final QueryCache queryCache = ComponentFactory.getQueryCache(); private final QueryCache queryCache = ComponentFactory.getQueryCache();
@@ -69,7 +68,8 @@ public class S2SemanticLayerService implements SemanticLayerService {
SchemaService schemaService, SemanticTranslator semanticTranslator, SchemaService schemaService, SemanticTranslator semanticTranslator,
MetricDrillDownChecker metricDrillDownChecker, MetricDrillDownChecker metricDrillDownChecker,
KnowledgeBaseService knowledgeBaseService, MetricService metricService, KnowledgeBaseService knowledgeBaseService, MetricService metricService,
DimensionService dimensionService, TranslatorConfig translatorConfig) { DimensionService dimensionService, DomainService domainService,
TranslatorConfig translatorConfig) {
this.statUtils = statUtils; this.statUtils = statUtils;
this.queryUtils = queryUtils; this.queryUtils = queryUtils;
this.semanticSchemaManager = semanticSchemaManager; this.semanticSchemaManager = semanticSchemaManager;
@@ -80,6 +80,7 @@ public class S2SemanticLayerService implements SemanticLayerService {
this.knowledgeBaseService = knowledgeBaseService; this.knowledgeBaseService = knowledgeBaseService;
this.metricService = metricService; this.metricService = metricService;
this.dimensionService = dimensionService; this.dimensionService = dimensionService;
this.domainService = domainService;
this.translatorConfig = translatorConfig; this.translatorConfig = translatorConfig;
} }
@@ -262,8 +263,11 @@ public class S2SemanticLayerService implements SemanticLayerService {
} }
@Override @Override
public List<ItemResp> getDomainDataSetTree() { public List<ItemResp> getDomainDataSetTree(User user) {
return schemaService.getDomainDataSetTree(); List<Long> domainsWithAuth = domainService.getDomainAuthSet(user, AuthType.VIEWER).stream()
.map(DomainResp::getId).toList();
return schemaService.getDomainDataSetTree().stream()
.filter(item -> domainsWithAuth.contains(item.getId())).toList();
} }
@Override @Override