diff --git a/api/src/main/kotlin/com/cubetiqs/web/config/SpringDocConfig.kt b/api/src/main/kotlin/com/cubetiqs/web/config/OpenApiDocConfig.kt similarity index 77% rename from api/src/main/kotlin/com/cubetiqs/web/config/SpringDocConfig.kt rename to api/src/main/kotlin/com/cubetiqs/web/config/OpenApiDocConfig.kt index e064c08..1b4ffdf 100644 --- a/api/src/main/kotlin/com/cubetiqs/web/config/SpringDocConfig.kt +++ b/api/src/main/kotlin/com/cubetiqs/web/config/OpenApiDocConfig.kt @@ -1,5 +1,7 @@ package com.cubetiqs.web.config +import io.swagger.v3.oas.annotations.enums.SecuritySchemeType +import io.swagger.v3.oas.annotations.security.SecurityScheme import io.swagger.v3.oas.models.ExternalDocumentation import io.swagger.v3.oas.models.OpenAPI import io.swagger.v3.oas.models.info.Info @@ -9,9 +11,15 @@ import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @Configuration -class SpringDocConfig { +@SecurityScheme( + name = "bearerAuth", + type = SecuritySchemeType.HTTP, + scheme = "bearer", + bearerFormat = "JWT", + +) +class OpenApiDocConfig { companion object { - private val PUBLIC_API_PATH get() = "/public/**" private val ADMIN_API_PATH get() = "/admin/**" private val DEFAULT_API_PATH get() = "/**" } @@ -19,25 +27,17 @@ class SpringDocConfig { @Bean fun defaultApi(): GroupedOpenApi { return GroupedOpenApi.builder() - .group("default-api") + .group("default") .pathsToMatch(DEFAULT_API_PATH) - .pathsToExclude("/error", PUBLIC_API_PATH, ADMIN_API_PATH) + .pathsToExclude("/error", ADMIN_API_PATH) .packagesToScan("com.cubetiqs.web") .build() } - @Bean - fun publicApi(): GroupedOpenApi { - return GroupedOpenApi.builder() - .group("public-api") - .pathsToMatch(PUBLIC_API_PATH) - .build() - } - @Bean fun adminApi(): GroupedOpenApi { return GroupedOpenApi.builder() - .group("admin-api") + .group("admin") .pathsToMatch(ADMIN_API_PATH) .build() } diff --git a/api/src/main/kotlin/com/cubetiqs/web/controller/admin/AdminController.kt b/api/src/main/kotlin/com/cubetiqs/web/controller/admin/AdminController.kt new file mode 100644 index 0000000..4ce9ee7 --- /dev/null +++ b/api/src/main/kotlin/com/cubetiqs/web/controller/admin/AdminController.kt @@ -0,0 +1,21 @@ +package com.cubetiqs.web.controller.admin + +import com.cubetiqs.web.controller.BaseController +import com.cubetiqs.web.util.RouteConstants +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import io.swagger.v3.oas.annotations.tags.Tag +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@Tag(name = "Admin") +@RestController +@RequestMapping(RouteConstants.ADMIN) +class AdminController : BaseController { + @Operation(security = [SecurityRequirement(name = "bearerAuth")]) + @GetMapping + fun getAdmin(): String { + return "Admin" + } +} \ No newline at end of file diff --git a/api/src/main/kotlin/com/cubetiqs/web/util/AppConstants.kt b/api/src/main/kotlin/com/cubetiqs/web/util/AppConstants.kt index 53b3dae..534f3b7 100644 --- a/api/src/main/kotlin/com/cubetiqs/web/util/AppConstants.kt +++ b/api/src/main/kotlin/com/cubetiqs/web/util/AppConstants.kt @@ -2,6 +2,7 @@ package com.cubetiqs.web.util object RouteConstants { const val INDEX = "/" + const val ADMIN = "/admin" } object AppConstants {