From 28a151956fa1b3ac2fd8eb3a927a1df08b60e2a5 Mon Sep 17 00:00:00 2001 From: Pascal Verdage Date: Mon, 27 Jul 2020 11:26:55 +0200 Subject: [PATCH] support oauth2 pre-selected scopes --- .../core/SwaggerUiOAuthProperties.java | 28 +++++++++++++++++++ .../springdoc/ui/app7/SpringDocApp7Test.java | 3 +- .../src/test/resources/results/app7 | 2 +- .../springdoc/ui/app5/SpringDocApp5Test.java | 2 +- .../src/test/resources/results/index5 | 2 +- 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiOAuthProperties.java b/springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiOAuthProperties.java index 0d87e14fd..114ae2909 100644 --- a/springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiOAuthProperties.java +++ b/springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiOAuthProperties.java @@ -21,6 +21,7 @@ package org.springdoc.core; +import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -28,6 +29,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.util.CollectionUtils; import static org.springdoc.core.Constants.SPRINGDOC_SWAGGER_UI_ENABLED; @@ -83,6 +85,11 @@ public class SwaggerUiOAuthProperties { */ private Boolean usePkceWithAuthorizationCodeGrant; + /** + * The Scopes selected by default upon authentication. + */ + private List scopes; + /** * Gets config parameters. * @@ -95,6 +102,9 @@ public Map getConfigParameters() { SpringDocPropertiesUtils.put("realm", realm, params); SpringDocPropertiesUtils.put("scopeSeparator", scopeSeparator, params); SpringDocPropertiesUtils.put("appName", appName, params); + if (!CollectionUtils.isEmpty(scopes)) { + SpringDocPropertiesUtils.put("scopes", String.join(" ", scopes), params); + } SpringDocPropertiesUtils.put("useBasicAuthenticationWithAccessCodeGrant", useBasicAuthenticationWithAccessCodeGrant, params); SpringDocPropertiesUtils.put("usePkceWithAuthorizationCodeGrant", usePkceWithAuthorizationCodeGrant, params); SpringDocPropertiesUtils.put("additionalQueryStringParams", additionalQueryStringParams, params); @@ -244,4 +254,22 @@ public Boolean getUsePkceWithAuthorizationCodeGrant() { public void setUsePkceWithAuthorizationCodeGrant(Boolean usePkceWithAuthorizationCodeGrant) { this.usePkceWithAuthorizationCodeGrant = usePkceWithAuthorizationCodeGrant; } + + /** + * Get the pre-selected scopes during authentication. + * + * @return the pre-selected scopes during authentication + */ + public List getScopes() { + return scopes; + } + + /** + * Sets the pre-selected scopes during authentication. + * + * @param scopes the pre-selected scopes during authentication + */ + public void setScopes(List scopes) { + this.scopes = scopes; + } } \ No newline at end of file diff --git a/springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app7/SpringDocApp7Test.java b/springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app7/SpringDocApp7Test.java index 39b105545..20cc89643 100644 --- a/springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app7/SpringDocApp7Test.java +++ b/springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app7/SpringDocApp7Test.java @@ -32,7 +32,8 @@ @TestPropertySource(properties = { "springdoc.swagger-ui.oauth.clientId=myClientId", "springdoc.swagger-ui.oauth.additionalQueryStringParams.test1=test1", - "springdoc.swagger-ui.oauth.additionalQueryStringParams.test2=test2" }) + "springdoc.swagger-ui.oauth.additionalQueryStringParams.test2=test2", + "springdoc.swagger-ui.oauth.scopes=scope1,scope2" }) public class SpringDocApp7Test extends AbstractSpringDocTest { @Test diff --git a/springdoc-openapi-ui/src/test/resources/results/app7 b/springdoc-openapi-ui/src/test/resources/results/app7 index acbee28c3..3a3017c51 100644 --- a/springdoc-openapi-ui/src/test/resources/results/app7 +++ b/springdoc-openapi-ui/src/test/resources/results/app7 @@ -55,7 +55,7 @@ window.ui = ui ui.initOAuth( -{"additionalQueryStringParams":{"test1":"test1","test2":"test2"},"clientId":"myClientId"}) +{"additionalQueryStringParams":{"test1":"test1","test2":"test2"},"clientId":"myClientId","scopes":"scope1 scope2"}) } diff --git a/springdoc-openapi-webflux-ui/src/test/java/test/org/springdoc/ui/app5/SpringDocApp5Test.java b/springdoc-openapi-webflux-ui/src/test/java/test/org/springdoc/ui/app5/SpringDocApp5Test.java index 70e9a6a0b..9092b4cb0 100644 --- a/springdoc-openapi-webflux-ui/src/test/java/test/org/springdoc/ui/app5/SpringDocApp5Test.java +++ b/springdoc-openapi-webflux-ui/src/test/java/test/org/springdoc/ui/app5/SpringDocApp5Test.java @@ -28,7 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -@TestPropertySource(properties = "springdoc.swagger-ui.oauth.clientId=myClientId") +@TestPropertySource(properties = {"springdoc.swagger-ui.oauth.clientId=myClientId", "springdoc.swagger-ui.oauth.scopes=scope1,scope2"}) public class SpringDocApp5Test extends AbstractSpringDocTest { @Test diff --git a/springdoc-openapi-webflux-ui/src/test/resources/results/index5 b/springdoc-openapi-webflux-ui/src/test/resources/results/index5 index 7156175b9..f917b1d2a 100644 --- a/springdoc-openapi-webflux-ui/src/test/resources/results/index5 +++ b/springdoc-openapi-webflux-ui/src/test/resources/results/index5 @@ -55,7 +55,7 @@ window.ui = ui ui.initOAuth( -{"clientId":"myClientId"}) +{"clientId":"myClientId","scopes":"scope1 scope2"}) }