Skip to content

Commit 88cc2cc

Browse files
authored
Merge pull request #800 from natrem/support-oauth2-scopes
support oauth2 pre-selected scopes
2 parents 5842104 + 28a1519 commit 88cc2cc

File tree

5 files changed

+33
-4
lines changed

5 files changed

+33
-4
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiOAuthProperties.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
package org.springdoc.core;
2222

2323

24+
import java.util.List;
2425
import java.util.Map;
2526
import java.util.TreeMap;
2627

2728
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2829
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2930
import org.springframework.boot.context.properties.ConfigurationProperties;
3031
import org.springframework.context.annotation.Configuration;
32+
import org.springframework.util.CollectionUtils;
3133

3234
import static org.springdoc.core.Constants.SPRINGDOC_SWAGGER_UI_ENABLED;
3335

@@ -83,6 +85,11 @@ public class SwaggerUiOAuthProperties {
8385
*/
8486
private Boolean usePkceWithAuthorizationCodeGrant;
8587

88+
/**
89+
* The Scopes selected by default upon authentication.
90+
*/
91+
private List<String> scopes;
92+
8693
/**
8794
* Gets config parameters.
8895
*
@@ -95,6 +102,9 @@ public Map<String, Object> getConfigParameters() {
95102
SpringDocPropertiesUtils.put("realm", realm, params);
96103
SpringDocPropertiesUtils.put("scopeSeparator", scopeSeparator, params);
97104
SpringDocPropertiesUtils.put("appName", appName, params);
105+
if (!CollectionUtils.isEmpty(scopes)) {
106+
SpringDocPropertiesUtils.put("scopes", String.join(" ", scopes), params);
107+
}
98108
SpringDocPropertiesUtils.put("useBasicAuthenticationWithAccessCodeGrant", useBasicAuthenticationWithAccessCodeGrant, params);
99109
SpringDocPropertiesUtils.put("usePkceWithAuthorizationCodeGrant", usePkceWithAuthorizationCodeGrant, params);
100110
SpringDocPropertiesUtils.put("additionalQueryStringParams", additionalQueryStringParams, params);
@@ -244,4 +254,22 @@ public Boolean getUsePkceWithAuthorizationCodeGrant() {
244254
public void setUsePkceWithAuthorizationCodeGrant(Boolean usePkceWithAuthorizationCodeGrant) {
245255
this.usePkceWithAuthorizationCodeGrant = usePkceWithAuthorizationCodeGrant;
246256
}
257+
258+
/**
259+
* Get the pre-selected scopes during authentication.
260+
*
261+
* @return the pre-selected scopes during authentication
262+
*/
263+
public List<String> getScopes() {
264+
return scopes;
265+
}
266+
267+
/**
268+
* Sets the pre-selected scopes during authentication.
269+
*
270+
* @param scopes the pre-selected scopes during authentication
271+
*/
272+
public void setScopes(List<String> scopes) {
273+
this.scopes = scopes;
274+
}
247275
}

springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app7/SpringDocApp7Test.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232

3333
@TestPropertySource(properties = { "springdoc.swagger-ui.oauth.clientId=myClientId",
3434
"springdoc.swagger-ui.oauth.additionalQueryStringParams.test1=test1",
35-
"springdoc.swagger-ui.oauth.additionalQueryStringParams.test2=test2" })
35+
"springdoc.swagger-ui.oauth.additionalQueryStringParams.test2=test2",
36+
"springdoc.swagger-ui.oauth.scopes=scope1,scope2" })
3637
public class SpringDocApp7Test extends AbstractSpringDocTest {
3738

3839
@Test

springdoc-openapi-ui/src/test/resources/results/app7

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
window.ui = ui
5757
ui.initOAuth(
58-
{"additionalQueryStringParams":{"test1":"test1","test2":"test2"},"clientId":"myClientId"})
58+
{"additionalQueryStringParams":{"test1":"test1","test2":"test2"},"clientId":"myClientId","scopes":"scope1 scope2"})
5959
}
6060
</script>
6161
</body>

springdoc-openapi-webflux-ui/src/test/java/test/org/springdoc/ui/app5/SpringDocApp5Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import static org.junit.jupiter.api.Assertions.assertEquals;
2929
import static org.junit.jupiter.api.Assertions.assertTrue;
3030

31-
@TestPropertySource(properties = "springdoc.swagger-ui.oauth.clientId=myClientId")
31+
@TestPropertySource(properties = {"springdoc.swagger-ui.oauth.clientId=myClientId", "springdoc.swagger-ui.oauth.scopes=scope1,scope2"})
3232
public class SpringDocApp5Test extends AbstractSpringDocTest {
3333

3434
@Test

springdoc-openapi-webflux-ui/src/test/resources/results/index5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
window.ui = ui
5757
ui.initOAuth(
58-
{"clientId":"myClientId"})
58+
{"clientId":"myClientId","scopes":"scope1 scope2"})
5959
}
6060
</script>
6161
</body>

0 commit comments

Comments
 (0)