forked from wuguolin/smartbi2
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.5 KiB
Java
134 lines
4.5 KiB
Java
package io.dataease.config;
|
|
|
|
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
|
|
import io.dataease.commons.condition.LicStatusCondition;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.context.annotation.*;
|
|
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 javax.annotation.Resource;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@EnableOpenApi
|
|
@Configuration
|
|
@Import(BeanValidatorPluginsConfiguration.class)
|
|
public class Knife4jConfiguration {
|
|
|
|
private final OpenApiExtensionResolver openApiExtensionResolver;
|
|
|
|
@Value("${app.version}")
|
|
private String version;
|
|
|
|
|
|
|
|
@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");
|
|
}
|
|
|
|
/*@Bean(value = "pluginsApi")
|
|
@Conditional(LicStatusCondition.class)
|
|
public Docket pluginsApi() {
|
|
return defaultApi("插件管理", "io.dataease.plugins.server");
|
|
}*/
|
|
|
|
|
|
private ApiInfo apiInfo(){
|
|
return null;
|
|
// return new ApiInfoBuilder()
|
|
// .title("Ipsos VIA BIBoard")
|
|
// .description("人人可用的开源数据可视化分析工具")
|
|
// .termsOfServiceUrl("https://dataease.io")
|
|
// .contact(new Contact("fit2cloud","https://www.fit2cloud.com/dataease/index.html","dataease@fit2cloud.com"))
|
|
// .version(version)
|
|
// .build();
|
|
}
|
|
|
|
private Docket defaultApi(String groupName, String packageName) {
|
|
List<SecurityScheme> securitySchemes=new ArrayList<>();
|
|
securitySchemes.add(accessKey());
|
|
securitySchemes.add(signature());
|
|
|
|
List<SecurityContext> securityContexts = new ArrayList<>();
|
|
securityContexts.add(securityContext());
|
|
|
|
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();
|
|
}
|
|
|
|
private ApiKey accessKey() {
|
|
return new ApiKey("accessKey", "accessKey", "header");
|
|
}
|
|
|
|
private ApiKey signature() {
|
|
return new ApiKey("signature", "signature", "header");
|
|
}
|
|
|
|
|
|
List<SecurityReference> defaultAuth() {
|
|
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
|
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
|
authorizationScopes[0] = authorizationScope;
|
|
|
|
List<SecurityReference> results = new ArrayList<>();
|
|
results.add(new SecurityReference("accessKey", authorizationScopes));
|
|
results.add(new SecurityReference("signature", authorizationScopes));
|
|
|
|
return results;
|
|
}
|
|
|
|
}
|