112 lines
4.2 KiB
Java
112 lines
4.2 KiB
Java
package io.dataease.config;
|
||
|
||
import cn.hutool.core.collection.CollectionUtil;
|
||
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.context.annotation.Bean;
|
||
import org.springframework.context.annotation.Configuration;
|
||
import org.springframework.context.annotation.Import;
|
||
import org.springframework.http.HttpHeaders;
|
||
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
|
||
import springfox.documentation.builders.*;
|
||
import springfox.documentation.oas.annotations.EnableOpenApi;
|
||
import springfox.documentation.service.*;
|
||
import springfox.documentation.spi.DocumentationType;
|
||
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||
import springfox.documentation.spring.web.plugins.Docket;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
@EnableOpenApi
|
||
@Configuration
|
||
@Import(BeanValidatorPluginsConfiguration.class)
|
||
public class Knife4jConfiguration {
|
||
|
||
private final OpenApiExtensionResolver openApiExtensionResolver;
|
||
|
||
|
||
@Autowired
|
||
public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {
|
||
this.openApiExtensionResolver = openApiExtensionResolver;
|
||
}
|
||
|
||
@Bean(value = "authApi")
|
||
public Docket authApi() {
|
||
return defaultApi("权限管理", "io.dataease.auth");
|
||
}
|
||
|
||
@Bean(value = "chartApi")
|
||
public Docket chartApi() {
|
||
return defaultApi("视图管理", "io.dataease.controller.chart");
|
||
}
|
||
|
||
@Bean(value = "datasetApi")
|
||
public Docket datasetApi() {
|
||
return defaultApi("数据集管理", "io.dataease.controller.dataset");
|
||
}
|
||
|
||
@Bean(value = "panelApi")
|
||
public Docket panelApi() {
|
||
return defaultApi("仪表板管理", "io.dataease.controller.panel");
|
||
}
|
||
|
||
@Bean(value = "datasourceApi")
|
||
public Docket datasourceApi() {
|
||
return defaultApi("数据源管理", "io.dataease.datasource");
|
||
}
|
||
|
||
@Bean(value = "sysApi")
|
||
public Docket sysApi() {
|
||
return defaultApi("系统管理", "io.dataease.controller.sys");
|
||
}
|
||
|
||
|
||
private ApiInfo apiInfo(){
|
||
return new ApiInfoBuilder()
|
||
.title("DataEase很棒~~~!!!")
|
||
.license("杭州飞致云信息科技有限公司 1.0-b9")
|
||
.description("人人可用的可视化工具")
|
||
.termsOfServiceUrl("http://fit2cloud.com/")
|
||
.contact(new Contact("fit2cloud","https://www.fit2cloud.com/dataease/index.html","dataease@fit2cloud.com"))
|
||
.version("1.0")
|
||
.build();
|
||
}
|
||
|
||
private Docket defaultApi(String groupName, String packageName) {
|
||
List<SecurityScheme> securitySchemes=new ArrayList<>();
|
||
List<SecurityContext> securityContexts = new ArrayList<>();
|
||
securityContexts.add(securityContext());
|
||
HttpAuthenticationScheme httpAuthenticationScheme = HttpAuthenticationScheme.JWT_BEARER_BUILDER
|
||
.name(HttpHeaders.AUTHORIZATION)
|
||
.description("Bearer Token")
|
||
.build();
|
||
securitySchemes.add(httpAuthenticationScheme);
|
||
Docket docket=new Docket(DocumentationType.OAS_30)
|
||
.apiInfo(apiInfo())
|
||
.groupName(groupName)
|
||
.select()
|
||
.apis(RequestHandlerSelectors.basePackage(packageName))
|
||
.paths(PathSelectors.any())
|
||
.build()
|
||
.securityContexts(securityContexts).securitySchemes(securitySchemes)
|
||
.extensions(openApiExtensionResolver.buildExtensions(groupName));
|
||
return docket;
|
||
}
|
||
|
||
private SecurityContext securityContext() {
|
||
return SecurityContext.builder()
|
||
.securityReferences(defaultAuth())
|
||
.forPaths(PathSelectors.regex("/.*"))
|
||
.build();
|
||
}
|
||
|
||
|
||
List<SecurityReference> defaultAuth() {
|
||
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
||
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
||
authorizationScopes[0] = authorizationScope;
|
||
return CollectionUtil.newArrayList(new SecurityReference("BearerToken", authorizationScopes));
|
||
}
|
||
|
||
}
|