diff --git a/demo-web-app/build.gradle.kts b/demo-web-app/build.gradle.kts index 66c5a8f..144162f 100644 --- a/demo-web-app/build.gradle.kts +++ b/demo-web-app/build.gradle.kts @@ -44,6 +44,7 @@ val testcontainersVersion = "1.21.3" val awaitilityVersion = "4.2.0" val googleZxing = "3.5.3" val reflectionsVersion = "0.10.2" +val openApiVersion = "2.3.0" dependencies { implementation(project(":ksef-client")) @@ -77,8 +78,10 @@ dependencies { integrationTestImplementation("org.testcontainers:testcontainers:${testcontainersVersion}") integrationTestImplementation("org.wiremock:wiremock-standalone:${wiremockStandaloneVersion}") implementation("org.awaitility:awaitility:${awaitilityVersion}") + implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:${openApiVersion}") testImplementation("org.reflections:reflections:${reflectionsVersion}") + } sourceSets { diff --git a/demo-web-app/src/main/java/pl/akmf/ksef/sdk/OpenApiConfig.java b/demo-web-app/src/main/java/pl/akmf/ksef/sdk/OpenApiConfig.java new file mode 100644 index 0000000..dbc876c --- /dev/null +++ b/demo-web-app/src/main/java/pl/akmf/ksef/sdk/OpenApiConfig.java @@ -0,0 +1,46 @@ +package pl.akmf.ksef.sdk; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springdoc.core.customizers.OpenApiCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class OpenApiConfig { + + private static final String SECURITY_SCHEME_NAME = "KSEFAuthToken"; + + @Bean + public OpenAPI customOpenAPI() { + return new OpenAPI() + .info(new Info() + .title("KSEF Demo APP") + .version("2.0.1")) + .components(new Components() + .addSecuritySchemes(SECURITY_SCHEME_NAME, + new SecurityScheme() + .type(SecurityScheme.Type.APIKEY) + .in(SecurityScheme.In.HEADER) + .name("Authorization"))) + .addSecurityItem(new SecurityRequirement().addList(SECURITY_SCHEME_NAME)); + } + + @Bean + public OpenApiCustomizer authHeaderCustomizer() { + return openApi -> { + openApi.getPaths().values().forEach(pathItem -> pathItem.readOperations().forEach(operation -> { + if (operation.getParameters() != null) { + operation.getParameters().removeIf(p -> + "Authorization".equalsIgnoreCase(p.getName()) && + "header".equalsIgnoreCase(p.getIn()) && + p.get$ref() == null + ); + } + })); + }; + } +} \ No newline at end of file