From 5c3ae07af1b94d93add71e5aeaa895159880e5af Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 16 Oct 2017 16:59:25 +0200 Subject: [PATCH] fixup! SONAR-7590 Redirect to requested page with identity provider --- .../sonar/server/authentication/OAuth2ContextFactory.java | 2 +- .../org/sonar/server/authentication/OAuth2Redirection.java | 5 +++++ .../server/authentication/OAuth2ContextFactoryTest.java | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java index ac051e4ab4a..b8fdec59f8c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2ContextFactory.java @@ -115,7 +115,7 @@ public class OAuth2ContextFactory { public void redirectToRequestedPage() { try { Optional redirectTo = oAuthRedirection.getAndDelete(request, response); - getResponse().sendRedirect(server.getContextPath() + redirectTo.orElse("/")); + getResponse().sendRedirect(redirectTo.orElse(server.getContextPath() + "/")); } catch (IOException e) { throw new IllegalStateException("Fail to redirect to home", e); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2Redirection.java b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2Redirection.java index c66d54e7ae5..18619fecda3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2Redirection.java +++ b/server/sonar-server/src/main/java/org/sonar/server/authentication/OAuth2Redirection.java @@ -31,6 +31,11 @@ import static org.sonar.server.authentication.Cookies.newCookieBuilder; public class OAuth2Redirection { private static final String REDIRECT_TO_COOKIE = "REDIRECT_TO"; + + /** + * The HTTP parameter that contains the path where the user should be redirect to. + * Please note that the web context is included. + */ private static final String RETURN_TO_PARAMETER = "return_to"; public void create(HttpServletRequest request, HttpServletResponse response) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java index 90322fbfb50..8bd30b6cb1d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/authentication/OAuth2ContextFactoryTest.java @@ -179,9 +179,9 @@ public class OAuth2ContextFactoryTest { } @Test - public void redirect_to_requested_page_context() throws Exception { - when(oAuthRedirection.getAndDelete(request, response)).thenReturn(Optional.of("/settings")); - when(server.getContextPath()).thenReturn("/sonarqube"); + public void redirect_to_requested_page_doesnt_need_context() throws Exception { + when(oAuthRedirection.getAndDelete(request, response)).thenReturn(Optional.of("/sonarqube/settings")); + when(server.getContextPath()).thenReturn("/other"); OAuth2IdentityProvider.CallbackContext callback = newCallbackContext(); callback.redirectToRequestedPage(); -- 2.39.5