mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
(fix)(chat)Should check permission when returning data set tree.
This commit is contained in:
@@ -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}")
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user