From a1c42f270917724c3d94bf9ba4a3e65e15b4738a Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 16 Aug 2013 19:27:13 +0200 Subject: [PATCH] preserve https across redirections if it was set --- .../commafeed/frontend/CommaFeedApplication.java | 9 +++++++++ .../com/commafeed/frontend/utils/WicketUtils.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/com/commafeed/frontend/CommaFeedApplication.java b/src/main/java/com/commafeed/frontend/CommaFeedApplication.java index ad4fb5e3..3ae5d96c 100644 --- a/src/main/java/com/commafeed/frontend/CommaFeedApplication.java +++ b/src/main/java/com/commafeed/frontend/CommaFeedApplication.java @@ -31,6 +31,7 @@ import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.IRequestHandler; import org.apache.wicket.request.Request; import org.apache.wicket.request.Response; +import org.apache.wicket.request.Url; import org.apache.wicket.request.component.IRequestableComponent; import org.apache.wicket.request.cycle.AbstractRequestCycleListener; import org.apache.wicket.request.cycle.RequestCycle; @@ -44,6 +45,7 @@ import com.commafeed.frontend.pages.NextUnreadRedirectPage; import com.commafeed.frontend.pages.PasswordRecoveryCallbackPage; import com.commafeed.frontend.pages.PasswordRecoveryPage; import com.commafeed.frontend.pages.WelcomePage; +import com.commafeed.frontend.utils.WicketUtils; import com.commafeed.frontend.utils.exception.DisplayExceptionPage; @Slf4j @@ -151,6 +153,13 @@ public class CommaFeedApplication extends AuthenticatedWebApplication { } } + @Override + public void restartResponseAtSignInPage() { + // preserve https if it was set + RequestCycle.get().getUrlRenderer().setBaseUrl(Url.parse(WicketUtils.getClientFullUrl())); + super.restartResponseAtSignInPage(); + } + @Override public Session newSession(Request request, Response response) { return new CommaFeedSession(request); diff --git a/src/main/java/com/commafeed/frontend/utils/WicketUtils.java b/src/main/java/com/commafeed/frontend/utils/WicketUtils.java index 6efcf64f..21fa782a 100644 --- a/src/main/java/com/commafeed/frontend/utils/WicketUtils.java +++ b/src/main/java/com/commafeed/frontend/utils/WicketUtils.java @@ -44,4 +44,19 @@ public class WicketUtils { WebResponse webResponse = (WebResponse) RequestCycle.get().getResponse(); return (HttpServletResponse) webResponse.getContainerResponse(); } + + /** + * like wicket's Request.getClientUrl() but returns an absolute url instead of a relative one + */ + public static String getClientFullUrl() { + HttpServletRequest request = getHttpServletRequest(); + StringBuffer requestURL = request.getRequestURL(); + String queryString = request.getQueryString(); + + if (queryString == null) { + return requestURL.toString(); + } else { + return requestURL.append('?').append(queryString).toString(); + } + } }