From 329cd0cf25962a3ba225f93e294af42ef1348e9a Mon Sep 17 00:00:00 2001 From: Dario Ghunney Ware Date: Thu, 23 Jan 2025 17:57:35 +0000 Subject: [PATCH] wip - refactoring & cleanup --- .../config/interfaces/DatabaseInterface.java | 2 +- .../security/CustomLogoutSuccessHandler.java | 46 ++++++++----------- .../config/security/InitialSecuritySetup.java | 2 +- .../SPDF/config/security/UserService.java | 2 +- .../security/database/DatabaseConfig.java | 2 +- .../security/database/ScheduledTasks.java | 2 +- ...tomOAuth2AuthenticationSuccessHandler.java | 2 +- .../security/oauth2/OAuth2Configuration.java | 14 ++---- ...stomSaml2AuthenticationSuccessHandler.java | 2 +- .../SPDF/controller/api/UserController.java | 2 +- .../controller/web/AccountWebController.java | 13 +++--- .../SPDF/model/ApplicationProperties.java | 15 +++--- .../UnsupportedProviderException.java | 2 +- .../SPDF/model/provider/GithubProvider.java | 7 ++- .../SPDF/model/provider/GoogleProvider.java | 10 ++-- .../SPDF/model/provider/KeycloakProvider.java | 12 +++-- .../SPDF/model/{ => provider}/Provider.java | 24 +++++----- .../security/database/DatabaseConfigTest.java | 2 +- 18 files changed, 74 insertions(+), 87 deletions(-) rename src/main/java/stirling/software/SPDF/model/{provider => exception}/UnsupportedProviderException.java (76%) rename src/main/java/stirling/software/SPDF/model/{ => provider}/Provider.java (77%) diff --git a/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java b/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java index 18fbf788..34b457e8 100644 --- a/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java +++ b/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java @@ -3,7 +3,7 @@ package stirling.software.SPDF.config.interfaces; import java.sql.SQLException; import java.util.List; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import stirling.software.SPDF.utils.FileInfo; public interface DatabaseInterface { diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java index 56088f1e..f5d1bbb3 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java @@ -15,7 +15,6 @@ import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuc import com.coveo.saml.SamlClient; -import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; @@ -26,8 +25,8 @@ import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrin import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2; import stirling.software.SPDF.model.ApplicationProperties.Security.SAML2; -import stirling.software.SPDF.model.Provider; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; +import stirling.software.SPDF.model.provider.Provider; import stirling.software.SPDF.utils.UrlUtils; @Slf4j @@ -39,7 +38,7 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { @Override public void onLogoutSuccess( HttpServletRequest request, HttpServletResponse response, Authentication authentication) - throws IOException, ServletException { + throws IOException { if (!response.isCommitted()) { // Handle user logout due to disabled account @@ -58,30 +57,25 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { // Handle SAML2 logout redirection if (authentication instanceof Saml2Authentication) { getRedirect_saml2(request, response, authentication); - return; } // Handle OAuth2 logout redirection else if (authentication instanceof OAuth2AuthenticationToken) { getRedirect_oauth2(request, response, authentication); - return; } // Handle Username/Password logout else if (authentication instanceof UsernamePasswordAuthenticationToken) { getRedirectStrategy().sendRedirect(request, response, "/login?logout=true"); - return; } // Handle unknown authentication types else { log.error( - "authentication class unknown: " - + authentication.getClass().getSimpleName()); + "authentication class unknown: {}", + authentication.getClass().getSimpleName()); getRedirectStrategy().sendRedirect(request, response, "/login?logout=true"); - return; } } else { // Redirect to login page after logout getRedirectStrategy().sendRedirect(request, response, "/login?logout=true"); - return; } } } @@ -162,17 +156,17 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { try { // Get OAuth2 provider details from configuration Provider provider = oauth.getClient().get(registrationId); - issuer = provider.getIssuer(); - clientId = provider.getClientId(); } catch (UnsupportedProviderException e) { log.error(e.getMessage()); } } else { registrationId = oauth.getProvider() != null ? oauth.getProvider() : ""; - issuer = oauth.getIssuer(); - clientId = oauth.getClientId(); } + + issuer = oauth.getIssuer(); + clientId = oauth.getClientId(); String errorMessage = ""; + // Handle different error scenarios during logout if (request.getParameter("oauth2AuthenticationErrorWeb") != null) { param = "erroroauth=oauth2AuthenticationErrorWeb"; @@ -194,7 +188,7 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { // Redirect based on OAuth2 provider switch (registrationId.toLowerCase()) { - case "keycloak": + case "keycloak" -> { // Add Keycloak specific logout URL if needed String logoutUrl = issuer @@ -205,28 +199,28 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { + response.encodeRedirectURL(redirect_url); log.info("Redirecting to Keycloak logout URL: " + logoutUrl); response.sendRedirect(logoutUrl); - break; - case "github": + } + case "github" -> { // Add GitHub specific logout URL if needed // todo: why does the redirect go to github? shouldn't it come to Stirling PDF? String githubLogoutUrl = "https://github.com/logout"; log.info("Redirecting to GitHub logout URL: " + redirect_url); response.sendRedirect(redirect_url); - break; - case "google": + } + case "google" -> { // Add Google specific logout URL if needed // String googleLogoutUrl = // "https://accounts.google.com/Logout?continue=https://appengine.google.com/_ah/logout?continue=" // + response.encodeRedirectURL(redirect_url); log.info("Google does not have a specific logout URL"); - // log.info("Redirecting to Google logout URL: " + googleLogoutUrl); - // response.sendRedirect(googleLogoutUrl); - // break; - default: + // log.info("Redirecting to Google logout URL: " + googleLogoutUrl); + // response.sendRedirect(googleLogoutUrl); + } + default -> { String defaultRedirectUrl = request.getContextPath() + "/login?" + param; - log.info("Redirecting to default logout URL: " + defaultRedirectUrl); + log.info("Redirecting to default logout URL: {}", defaultRedirectUrl); response.sendRedirect(defaultRedirectUrl); - break; + } } } diff --git a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java index c521d2ca..6ec4059d 100644 --- a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java +++ b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java @@ -10,7 +10,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.interfaces.DatabaseInterface; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.Role; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; @Slf4j @Component diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index 9d944340..fa90c2b3 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -26,7 +26,7 @@ import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrin import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; import stirling.software.SPDF.model.*; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import stirling.software.SPDF.repository.AuthorityRepository; import stirling.software.SPDF.repository.UserRepository; diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java index 32856d0e..2280ac90 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java @@ -13,7 +13,7 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.InstallationPathConfig; import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; @Slf4j @Getter diff --git a/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java b/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java index 8597935f..c318f1d9 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component; import stirling.software.SPDF.config.interfaces.DatabaseInterface; import stirling.software.SPDF.controller.api.H2SQLCondition; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; @Component @Conditional(H2SQLCondition.class) diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java index 6cca85de..67f5e810 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java @@ -19,7 +19,7 @@ import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2; import stirling.software.SPDF.model.AuthenticationType; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import stirling.software.SPDF.utils.RequestUriUtils; public class CustomOAuth2AuthenticationSuccessHandler diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java index 82af61bc..7a181803 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java @@ -1,5 +1,7 @@ package stirling.software.SPDF.config.security.oauth2; +import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -28,7 +30,6 @@ import stirling.software.SPDF.model.User; import stirling.software.SPDF.model.provider.GithubProvider; import stirling.software.SPDF.model.provider.GoogleProvider; import stirling.software.SPDF.model.provider.KeycloakProvider; -import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; @Slf4j @Configuration @@ -41,9 +42,7 @@ public class OAuth2Configuration { @Lazy private final UserService userService; public OAuth2Configuration( - ApplicationProperties applicationProperties, - @Lazy UserService userService - ) { + ApplicationProperties applicationProperties, @Lazy UserService userService) { this.userService = userService; this.applicationProperties = applicationProperties; } @@ -123,11 +122,8 @@ public class OAuth2Configuration { return Optional.empty(); } - GithubProvider github = applicationProperties - .getSecurity() - .getOauth2() - .getClient() - .getGithub(); + GithubProvider github = + applicationProperties.getSecurity().getOauth2().getClient().getGithub(); return github != null && github.isSettingsValid() ? Optional.of( diff --git a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java index c6c64a82..8f122302 100644 --- a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java @@ -19,7 +19,7 @@ import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.ApplicationProperties.Security.SAML2; import stirling.software.SPDF.model.AuthenticationType; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import stirling.software.SPDF.utils.RequestUriUtils; @AllArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index f2534aad..5f59e186 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -34,7 +34,7 @@ import stirling.software.SPDF.model.AuthenticationType; import stirling.software.SPDF.model.Role; import stirling.software.SPDF.model.User; import stirling.software.SPDF.model.api.user.UsernameAndPass; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; @Controller @Tag(name = "User", description = "User APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java index 31c39c1f..c8d84f09 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java @@ -37,6 +37,7 @@ import stirling.software.SPDF.repository.UserRepository; @Tag(name = "Account Security", description = "Account Security APIs") public class AccountWebController { + public static final String OAUTH_2_AUTHORIZATION = "/oauth2/authorization/"; private final ApplicationProperties applicationProperties; private final SessionPersistentRegistry sessionPersistentRegistry; @@ -65,26 +66,24 @@ public class AccountWebController { if (oauth != null) { if (oauth.getEnabled()) { if (oauth.isSettingsValid()) { - providerList.put("/oauth2/authorization/oidc", oauth.getProvider()); + providerList.put(OAUTH_2_AUTHORIZATION + "oidc", oauth.getProvider()); } Client client = oauth.getClient(); if (client != null) { GoogleProvider google = client.getGoogle(); if (google.isSettingsValid()) { providerList.put( - "/oauth2/authorization/" + google.getName(), - google.getClientName()); + OAUTH_2_AUTHORIZATION + google.getName(), google.getClientName()); } GithubProvider github = client.getGithub(); if (github.isSettingsValid()) { providerList.put( - "/oauth2/authorization/" + github.getName(), - github.getClientName()); + OAUTH_2_AUTHORIZATION + github.getName(), github.getClientName()); } KeycloakProvider keycloak = client.getKeycloak(); if (keycloak.isSettingsValid()) { providerList.put( - "/oauth2/authorization/" + keycloak.getName(), + OAUTH_2_AUTHORIZATION + keycloak.getName(), keycloak.getClientName()); } } @@ -101,7 +100,7 @@ public class AccountWebController { .removeIf(entry -> entry.getKey() == null || entry.getValue() == null); model.addAttribute("providerlist", providerList); model.addAttribute("loginMethod", securityProps.getLoginMethod()); - boolean altLogin = providerList.size() > 0 ? securityProps.isAltLogin() : false; + boolean altLogin = !providerList.isEmpty() ? securityProps.isAltLogin() : false; model.addAttribute("altLogin", altLogin); model.addAttribute("currentPage", "login"); String error = request.getParameter("error"); diff --git a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java index 480b0f53..7145eac7 100644 --- a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java +++ b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -33,10 +32,11 @@ import lombok.ToString; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.InstallationPathConfig; import stirling.software.SPDF.config.YamlPropertySourceFactory; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import stirling.software.SPDF.model.provider.GithubProvider; import stirling.software.SPDF.model.provider.GoogleProvider; import stirling.software.SPDF.model.provider.KeycloakProvider; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.provider.Provider; @Configuration @ConfigurationProperties(prefix = "") @@ -227,9 +227,7 @@ public class ApplicationProperties { public void setScopes(String scopes) { List scopesList = - Arrays.stream(scopes.split(",")) - .map(String::trim) - .toList(); + Arrays.stream(scopes.split(",")).map(String::trim).toList(); this.scopes.addAll(scopesList); } @@ -260,8 +258,11 @@ public class ApplicationProperties { case "google" -> getGoogle(); case "github" -> getGithub(); case "keycloak" -> getKeycloak(); - default -> throw new UnsupportedProviderException( - "Logout from the provider is not supported? Report it at https://github.com/Stirling-Tools/Stirling-PDF/issues"); + default -> + throw new UnsupportedProviderException( + "Logout from the provider " + + registrationId + + " is not supported. Report it at https://github.com/Stirling-Tools/Stirling-PDF/issues"); }; } } diff --git a/src/main/java/stirling/software/SPDF/model/provider/UnsupportedProviderException.java b/src/main/java/stirling/software/SPDF/model/exception/UnsupportedProviderException.java similarity index 76% rename from src/main/java/stirling/software/SPDF/model/provider/UnsupportedProviderException.java rename to src/main/java/stirling/software/SPDF/model/exception/UnsupportedProviderException.java index f9010601..d0bd8330 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/UnsupportedProviderException.java +++ b/src/main/java/stirling/software/SPDF/model/exception/UnsupportedProviderException.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.model.provider; +package stirling.software.SPDF.model.exception; public class UnsupportedProviderException extends Exception { public UnsupportedProviderException(String message) { diff --git a/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java b/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java index 2bb4fe32..ff00eca5 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java @@ -1,13 +1,11 @@ package stirling.software.SPDF.model.provider; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.stream.Collectors; import lombok.NoArgsConstructor; -import stirling.software.SPDF.model.Provider; +// @Setter @NoArgsConstructor public class GithubProvider extends Provider { @@ -22,7 +20,8 @@ public class GithubProvider extends Provider { private Collection scopes = new ArrayList<>(); private String useAsUsername = "login"; - public GithubProvider(String clientId, String clientSecret, Collection scopes, String useAsUsername) { + public GithubProvider( + String clientId, String clientSecret, Collection scopes, String useAsUsername) { super(null, NAME, CLIENT_NAME, clientId, clientSecret, scopes, useAsUsername); this.clientId = clientId; this.clientSecret = clientSecret; diff --git a/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java b/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java index 4839f80a..d1ecb539 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java @@ -1,15 +1,11 @@ package stirling.software.SPDF.model.provider; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; import lombok.NoArgsConstructor; -import stirling.software.SPDF.model.Provider; +// @Setter @NoArgsConstructor public class GoogleProvider extends Provider { @@ -25,7 +21,8 @@ public class GoogleProvider extends Provider { private Collection scopes = new ArrayList<>(); private String useAsUsername = "email"; - public GoogleProvider(String clientId, String clientSecret, Collection scopes, String useAsUsername) { + public GoogleProvider( + String clientId, String clientSecret, Collection scopes, String useAsUsername) { super(null, NAME, CLIENT_NAME, clientId, clientSecret, scopes, useAsUsername); this.clientId = clientId; this.clientSecret = clientSecret; @@ -67,5 +64,4 @@ public class GoogleProvider extends Provider { + useAsUsername + "]"; } - } diff --git a/src/main/java/stirling/software/SPDF/model/provider/KeycloakProvider.java b/src/main/java/stirling/software/SPDF/model/provider/KeycloakProvider.java index ad674916..77a50bdc 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/KeycloakProvider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/KeycloakProvider.java @@ -1,13 +1,11 @@ package stirling.software.SPDF.model.provider; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.stream.Collectors; import lombok.NoArgsConstructor; -import stirling.software.SPDF.model.Provider; +// @Setter @NoArgsConstructor public class KeycloakProvider extends Provider { @@ -20,7 +18,12 @@ public class KeycloakProvider extends Provider { private Collection scopes; private String useAsUsername = "email"; - public KeycloakProvider(String issuer, String clientId, String clientSecret, Collection scopes, String useAsUsername) { + public KeycloakProvider( + String issuer, + String clientId, + String clientSecret, + Collection scopes, + String useAsUsername) { super(issuer, NAME, CLIENT_NAME, clientId, clientSecret, scopes, useAsUsername); this.useAsUsername = useAsUsername; this.issuer = issuer; @@ -56,5 +59,4 @@ public class KeycloakProvider extends Provider { + useAsUsername + "]"; } - } diff --git a/src/main/java/stirling/software/SPDF/model/Provider.java b/src/main/java/stirling/software/SPDF/model/provider/Provider.java similarity index 77% rename from src/main/java/stirling/software/SPDF/model/Provider.java rename to src/main/java/stirling/software/SPDF/model/provider/Provider.java index 955da612..e2a638c0 100644 --- a/src/main/java/stirling/software/SPDF/model/Provider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/Provider.java @@ -1,8 +1,9 @@ -package stirling.software.SPDF.model; +package stirling.software.SPDF.model.provider; import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; + import lombok.Getter; import lombok.NoArgsConstructor; @@ -25,8 +26,7 @@ public abstract class Provider { String clientId, String clientSecret, Collection scopes, - String useAsUsername - ) { + String useAsUsername) { this.issuer = issuer; this.name = name; this.clientName = clientName; @@ -53,32 +53,32 @@ public abstract class Provider { return value != null && !value.isEmpty(); } - protected void setIssuer(String issuer) { + public void setIssuer(String issuer) { this.issuer = issuer; } - protected void setName(String name) { + public void setName(String name) { this.name = name; } - protected void setClientName(String clientName) { + public void setClientName(String clientName) { this.clientName = clientName; } - protected void setClientId(String clientId) { + public void setClientId(String clientId) { this.clientId = clientId; } - protected void setClientSecret(String clientSecret) { + public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } - protected void setScopes(String scopes) { - this.scopes = Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList()); + public void setScopes(String scopes) { + this.scopes = + Arrays.stream(scopes.split(",")).map(String::trim).collect(Collectors.toList()); } - protected void setUseAsUsername(String useAsUsername) { + public void setUseAsUsername(String useAsUsername) { this.useAsUsername = useAsUsername; } - } diff --git a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java b/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java index bcfdc563..6d933d72 100644 --- a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java +++ b/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java @@ -9,7 +9,7 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.provider.UnsupportedProviderException; +import stirling.software.SPDF.model.exception.UnsupportedProviderException; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock;