diff --git a/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java b/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java index b6e98f027c..be2860cc1d 100644 --- a/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java +++ b/backend/src/main/java/io/dataease/config/Knife4jConfiguration.java @@ -1,11 +1,15 @@ package io.dataease.config; import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.*; import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration; +import springfox.documentation.RequestHandler; import springfox.documentation.builders.*; import springfox.documentation.oas.annotations.EnableOpenApi; import springfox.documentation.service.*; @@ -15,11 +19,14 @@ import springfox.documentation.spring.web.plugins.Docket; import java.util.ArrayList; import java.util.List; + @EnableOpenApi @Configuration @Import(BeanValidatorPluginsConfiguration.class) public class Knife4jConfiguration implements BeanPostProcessor{ + private static final String splitor = ","; + private final OpenApiExtensionResolver openApiExtensionResolver; @Value("${version}") @@ -54,12 +61,12 @@ public class Knife4jConfiguration implements BeanPostProcessor{ @Bean(value = "datasourceApi") public Docket datasourceApi() { - return defaultApi("数据源管理", "io.dataease.datasource"); + return defaultApi("数据源管理", "io.dataease.controller.datasource"); } @Bean(value = "sysApi") public Docket sysApi() { - return defaultApi("系统管理", "io.dataease.controller.sys"); + return defaultApi("系统管理", "io.dataease.controller.sys,io.dataease.plugins.server"); } private ApiInfo apiInfo(){ @@ -79,12 +86,12 @@ public class Knife4jConfiguration implements BeanPostProcessor{ List securityContexts = new ArrayList<>(); securityContexts.add(securityContext()); - Docket docket=new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .groupName(groupName) .select() - .apis(RequestHandlerSelectors.basePackage(packageName)) + /*.apis(RequestHandlerSelectors.basePackage(packageName))*/ + .apis(basePackage(packageName)) .paths(PathSelectors.any()) .build() .securityContexts(securityContexts).securitySchemes(securitySchemes) @@ -120,4 +127,25 @@ public class Knife4jConfiguration implements BeanPostProcessor{ return results; } + public static Predicate basePackage(final String basePackage) { + return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true); + } + + private static Function, Boolean> handlerPackage(final String basePackage) { + return input -> { + // 循环判断匹配 + for (String strPackage : basePackage.split(splitor)) { + boolean isMatch = input.getPackage().getName().startsWith(strPackage); + if (isMatch) { + return true; + } + } + return false; + }; + } + + private static Optional> declaringClass(RequestHandler input) { + return Optional.fromNullable(input.declaringClass()); + } + } diff --git a/backend/src/main/java/io/dataease/controller/IndexController.java b/backend/src/main/java/io/dataease/controller/IndexController.java index bf8ad7eca0..02f7aca44f 100644 --- a/backend/src/main/java/io/dataease/controller/IndexController.java +++ b/backend/src/main/java/io/dataease/controller/IndexController.java @@ -44,7 +44,8 @@ public class IndexController { case valid: return "doc.html"; default: - return "nolic.html"; +// return "nolic.html"; + return "doc.html"; } } diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java index 4ef2b9b0eb..9a0abdc441 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java @@ -3,9 +3,12 @@ package io.dataease.controller.dataset; import com.auth0.jwt.JWT; import com.auth0.jwt.interfaces.DecodedJWT; import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.dataease.auth.annotation.DePermission; import io.dataease.auth.filter.F2CLinkFilter; import io.dataease.base.domain.DatasetTable; import io.dataease.base.domain.DatasetTableField; +import io.dataease.commons.constants.DePermissionType; +import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.commons.exception.DEException; import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.MultFieldValuesRequest; @@ -106,6 +109,7 @@ public class DataSetTableFieldController { dataSetTableFieldsService.batchEdit(list); } + @DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE) @ApiOperation("保存") @PostMapping("save") public DatasetTableField save(@RequestBody DatasetTableField datasetTableField) { diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskController.java index 71fc911bb7..e0703d256b 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskController.java @@ -3,7 +3,10 @@ package io.dataease.controller.dataset; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.dataease.auth.annotation.DePermission; import io.dataease.base.domain.DatasetTableTask; +import io.dataease.commons.constants.DePermissionType; +import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; import io.dataease.controller.request.dataset.DataSetTaskRequest; @@ -32,6 +35,7 @@ public class DataSetTableTaskController { @Resource private DataSetTableTaskLogService dataSetTableTaskLogService; + @DePermission(type = DePermissionType.DATASET, value = "datasetTableTask.tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE) @ApiOperation("保存") @PostMapping("save") public DatasetTableTask save(@RequestBody DataSetTaskRequest dataSetTaskRequest) throws Exception { @@ -70,6 +74,7 @@ public class DataSetTableTaskController { dataSetTableTaskService.updateDatasetTableTaskStatus(datasetTableTask); } + @DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE) @ApiOperation("执行任务") @PostMapping("/execTask") public void execTask(@RequestBody DatasetTableTask datasetTableTask) throws Exception{ diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskLogController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskLogController.java index 638145fd5d..5160a2b5c2 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskLogController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskLogController.java @@ -3,7 +3,10 @@ package io.dataease.controller.dataset; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.dataease.auth.annotation.DePermission; import io.dataease.base.domain.DatasetTableTaskLog; +import io.dataease.commons.constants.DePermissionType; +import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; import io.dataease.controller.sys.base.BaseGridRequest; @@ -28,6 +31,7 @@ public class DataSetTableTaskLogController { @Resource private DataSetTableTaskLogService dataSetTableTaskLogService; + @DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE) @ApiOperation("保存") @PostMapping("save") public DatasetTableTaskLog save(@RequestBody DatasetTableTaskLog datasetTableTaskLog) { diff --git a/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java b/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java index 2a5d1cfda5..68e81c2c9f 100644 --- a/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java +++ b/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java @@ -18,10 +18,11 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import java.util.ArrayList; import java.util.List; - +@ApiIgnore @RestController @RequestMapping("plugin/dataset/columnPermissions") public class ColumnPermissionsController { diff --git a/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java index dfde1fdb44..e685a45eaa 100644 --- a/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java +++ b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java @@ -15,10 +15,11 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import java.util.ArrayList; import java.util.List; - +@ApiIgnore @RestController @RequestMapping("plugin/dataset/rowPermissions") public class RowPermissionsController { diff --git a/backend/src/main/java/io/dataease/plugins/server/SSOServer.java b/backend/src/main/java/io/dataease/plugins/server/SSOServer.java index 39566e0119..00dde59a39 100644 --- a/backend/src/main/java/io/dataease/plugins/server/SSOServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/SSOServer.java @@ -30,7 +30,9 @@ import io.dataease.plugins.xpack.oidc.dto.SSOToken; import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo; import io.dataease.plugins.xpack.oidc.service.OidcXpackService; import io.dataease.service.sys.SysUserService; +import springfox.documentation.annotations.ApiIgnore; +@ApiIgnore @RequestMapping("/sso") @Controller public class SSOServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/ThemeServer.java b/backend/src/main/java/io/dataease/plugins/server/ThemeServer.java index df49eba490..b8c25834f7 100644 --- a/backend/src/main/java/io/dataease/plugins/server/ThemeServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/ThemeServer.java @@ -19,7 +19,9 @@ import io.dataease.plugins.xpack.theme.dto.ThemeDto; import io.dataease.plugins.xpack.theme.dto.ThemeItem; import io.dataease.plugins.xpack.theme.dto.ThemeRequest; import io.dataease.plugins.xpack.theme.service.ThemeXpackService; +import springfox.documentation.annotations.ApiIgnore; +@ApiIgnore @RequestMapping("/plugin/theme") @RestController public class ThemeServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java index 2aec82d079..b6e71bdf5f 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java @@ -17,9 +17,10 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; import io.dataease.plugins.xpack.auth.service.AuthXpackService; +import springfox.documentation.annotations.ApiIgnore; import java.util.*; - +@ApiIgnore @RequestMapping("/plugin/auth") @RestController public class XAuthServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XDeptServer.java b/backend/src/main/java/io/dataease/plugins/server/XDeptServer.java index 0c3b911405..0d4f46036a 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XDeptServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XDeptServer.java @@ -95,15 +95,15 @@ public class XDeptServer { } - @RequiresPermissions("dept:del") + @ApiIgnore - @ApiOperation("删除") @PostMapping("/nodesByDeptId/{deptId}") public List nodesByDeptId(@PathVariable("deptId") Long deptId){ DeptXpackService deptService = SpringContextUtil.getBean(DeptXpackService.class); return deptService.searchTree(deptId); } + @RequiresPermissions("dept:edit") @ApiOperation("移动") @PostMapping("/move") public void move(@RequestBody XpackMoveDept xpackMoveDept){ diff --git a/backend/src/main/java/io/dataease/plugins/server/XDisplayServer.java b/backend/src/main/java/io/dataease/plugins/server/XDisplayServer.java index b689183768..ef987a473c 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XDisplayServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XDisplayServer.java @@ -7,9 +7,11 @@ import io.dataease.plugins.xpack.display.service.DisplayXpackService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import springfox.documentation.annotations.ApiIgnore; + import java.util.List; import java.util.Map; - +@ApiIgnore @RequestMapping("/api/display") @RestController public class XDisplayServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java b/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java index 317fe48079..470cbbb7aa 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java @@ -23,13 +23,14 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import java.util.List; import java.util.concurrent.Future; import javax.annotation.Resource; - +@ApiIgnore @RequestMapping("/plugin/task") @RestController public class XEmailTaskServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java b/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java index 44f77c9833..742a9f03cb 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java @@ -8,9 +8,10 @@ import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo; import io.dataease.plugins.xpack.ldap.service.LdapXpackService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import java.util.List; - +@ApiIgnore @RequestMapping("/plugin/ldap") @RestController public class XLdapServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java b/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java index bf600f0aae..042207e088 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java @@ -7,10 +7,12 @@ import io.dataease.plugins.xpack.oidc.service.OidcXpackService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; + import java.util.HashMap; import java.util.List; import java.util.Map; - +@ApiIgnore @RequestMapping("/plugin/oidc") @RestController public class XOidcServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XUserKeysServer.java b/backend/src/main/java/io/dataease/plugins/server/XUserKeysServer.java index 994eb8aac1..4cbbce3b1a 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XUserKeysServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XUserKeysServer.java @@ -5,10 +5,12 @@ import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto; import io.dataease.plugins.xpack.ukey.service.UkeyXpackService; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import javax.servlet.ServletRequest; import java.util.List; +@ApiIgnore @RequestMapping("/plugin/ukey") @RestController public class XUserKeysServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/view/PluginViewServer.java b/backend/src/main/java/io/dataease/plugins/server/view/PluginViewServer.java index d57b1088ab..94e33239aa 100644 --- a/backend/src/main/java/io/dataease/plugins/server/view/PluginViewServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/view/PluginViewServer.java @@ -12,7 +12,9 @@ import org.springframework.web.bind.annotation.RestController; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.view.entity.PluginViewType; import io.dataease.plugins.view.service.ViewPluginService; +import springfox.documentation.annotations.ApiIgnore; +@ApiIgnore @RequestMapping("/plugin/view") @RestController public class PluginViewServer { diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index e1a360d7f0..f6caed5753 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -135,6 +135,7 @@ public class DatasourceService { return extDataSourceMapper.query(gridExample); } + @DeCleaner(DePermissionType.DATASOURCE) public void deleteDatasource(String datasourceId) throws Exception { DatasetTableExample example = new DatasetTableExample(); example.createCriteria().andDataSourceIdEqualTo(datasourceId);