Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 1 addition & 79 deletions Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<AuthorizationScope?>? {
return emptyList()
}

fun grantTypes(): List<GrantType?>? {
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<String>) {
runApplication<ApiApp>(*args)
Expand Down
Original file line number Diff line number Diff line change
@@ -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<AuthorizationScope?> {
return listOf(AuthorizationScope("openid", "OpenId"))
}

private fun grantTypes(): List<GrantType?> {
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()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<AuthorizationScope?>? {
return emptyList()
}

fun grantTypes(): List<GrantType?>? {
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<String>) {
runApplication<MatchingGatewayApp>(*args)
Expand Down
Original file line number Diff line number Diff line change
@@ -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<AuthorizationScope?> {
return listOf(AuthorizationScope("openid", "OpenId"))
}

private fun grantTypes(): List<GrantType?> {
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()
}
}
Loading