diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt index a6c4103a4..338e2bab1 100644 --- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt +++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt @@ -22,85 +22,7 @@ import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") @EnableSwagger2 -class ApiApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexApi(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-api") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/api/v3.*")) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { true } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +class ApiApp fun main(args: Array) { runApplication(*args) diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..c9fe3d51b --- /dev/null +++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -0,0 +1,97 @@ +package co.nilin.opex.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + +@Configuration +class SwaggerConfig { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexApi(): Docket { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-api") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/api/v3.*")) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { true } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } +} \ No newline at end of file diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt index 5b1db6af4..5a141ca72 100644 --- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt +++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt @@ -16,90 +16,14 @@ import springfox.documentation.spi.service.contexts.SecurityContext import springfox.documentation.spring.web.plugins.Docket import springfox.documentation.swagger.web.SecurityConfiguration import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import springfox.documentation.swagger2.annotations.EnableSwagger2 import java.security.Principal import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") -class MatchingGatewayApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexMatchingGateway(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-matching-gateway") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/actuator.*").negate()) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { true } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +@EnableSwagger2 +class MatchingGatewayApp fun main(args: Array) { runApplication(*args) diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..37abadf5e --- /dev/null +++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -0,0 +1,98 @@ +package co.nilin.opex.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + + +@Configuration +class SwaggerConfig { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexMatchingGateway(): Docket { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-matching-gateway") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/actuator.*").negate()) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { true } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } +} \ No newline at end of file diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt index c512b722d..58904b28a 100644 --- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt +++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt @@ -16,92 +16,14 @@ import springfox.documentation.spi.service.contexts.SecurityContext import springfox.documentation.spring.web.plugins.Docket import springfox.documentation.swagger.web.SecurityConfiguration import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import springfox.documentation.swagger2.annotations.EnableSwagger2 import java.security.Principal import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") -class WalletApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexWallet(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-wallet") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/actuator.*").negate()) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { - it.requestMappingPattern().matches(Regex("^/(balanceOf|owner)/.*")) - } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +@EnableSwagger2 +class WalletApp fun main(args: Array) { runApplication(*args) diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..76b80d954 --- /dev/null +++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt @@ -0,0 +1,99 @@ +package co.nilin.opex.wallet.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + +@Configuration +class SwaggerConfig { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexWallet(): Docket { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-wallet") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/actuator.*").negate()) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { + it.requestMappingPattern().matches(Regex("^/(balanceOf|owner)/.*")) + } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } +} \ No newline at end of file