From ac97b5792ad32cbf939e709ccd1d5525e759ec2c Mon Sep 17 00:00:00 2001 From: j2blake Date: Fri, 10 Jun 2011 18:53:35 +0000 Subject: [PATCH] NIHVIVO-2696 Refactor LoginRedirector to make it more flexible - usable from Freemarker controllers. --- .../authenticate/LoginExternalAuthReturn.java | 8 +- .../authenticate/LoginRedirector.java | 80 ++++++++++--------- .../webapp/controller/edit/Authenticate.java | 4 +- 3 files changed, 49 insertions(+), 43 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginExternalAuthReturn.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginExternalAuthReturn.java index b4eca1079..8b525f6fe 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginExternalAuthReturn.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginExternalAuthReturn.java @@ -57,7 +57,7 @@ public class LoginExternalAuthReturn extends BaseLoginServlet { getAuthenticator(req).recordLoginAgainstUserAccount(userAccount, AuthenticationSource.EXTERNAL); removeLoginProcessArtifacts(req); - new LoginRedirector(req, resp).redirectLoggedInUser(); + new LoginRedirector(req).redirectLoggedInUser(resp); return; } @@ -71,14 +71,14 @@ public class LoginExternalAuthReturn extends BaseLoginServlet { getAuthenticator(req).recordLoginWithoutUserAccount(uri); removeLoginProcessArtifacts(req); - new LoginRedirector(req, resp).redirectLoggedInUser(); + new LoginRedirector(req).redirectLoggedInUser(resp); return; } log.debug("User is not recognized: " + externalAuthId); removeLoginProcessArtifacts(req); - new LoginRedirector(req, resp) - .redirectUnrecognizedExternalUser(externalAuthId); + new LoginRedirector(req).redirectUnrecognizedExternalUser(resp, + externalAuthId); } private void removeLoginProcessArtifacts(HttpServletRequest req) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginRedirector.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginRedirector.java index d0746ad92..1853c04f0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginRedirector.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/LoginRedirector.java @@ -29,17 +29,14 @@ public class LoginRedirector { private static final Log log = LogFactory.getLog(LoginRedirector.class); private final HttpServletRequest request; - private final HttpServletResponse response; private final HttpSession session; private final String uriOfAssociatedIndividual; private final String afterLoginPage; - public LoginRedirector(HttpServletRequest request, - HttpServletResponse response) { + public LoginRedirector(HttpServletRequest request) { this.request = request; this.session = request.getSession(); - this.response = response; uriOfAssociatedIndividual = getAssociatedIndividualUri(); @@ -70,28 +67,45 @@ public class LoginRedirector { } } - public void redirectLoggedInUser() throws IOException { - DisplayMessage.setMessage(request, assembleWelcomeMessage()); - - try { - if (isSelfEditorWithIndividual()) { - log.debug("Going to Individual home page."); - response.sendRedirect(getAssociatedIndividualHomePage()); - } else if (isMerelySelfEditor()) { - log.debug("User not recognized. Going to application home."); - response.sendRedirect(getApplicationHomePageUrl()); + public String getRedirectionUriForLoggedInUser() { + if (isSelfEditorWithIndividual()) { + log.debug("Going to Individual home page."); + return getAssociatedIndividualHomePage(); + } else if (isMerelySelfEditor()) { + log.debug("User not recognized. Going to application home."); + return getApplicationHomePageUrl(); + } else { + if (isLoginPage(afterLoginPage)) { + log.debug("Coming from /login. Going to site admin page."); + return getSiteAdminPageUrl(); + } else if (null != afterLoginPage) { + log.debug("Returning to requested page: " + afterLoginPage); + return afterLoginPage; } else { - if (isLoginPage(afterLoginPage)) { - log.debug("Coming from /login. Going to site admin page."); - response.sendRedirect(getSiteAdminPageUrl()); - } else if (null != afterLoginPage) { - log.debug("Returning to requested page: " + afterLoginPage); - response.sendRedirect(afterLoginPage); - } else { - log.debug("Don't know what to do. Go home."); - response.sendRedirect(getApplicationHomePageUrl()); - } + log.debug("Don't know what to do. Go home."); + return getApplicationHomePageUrl(); } + } + } + + public String getRedirectionUriForCancellingUser() { + if (isLoginPage(afterLoginPage)) { + log.debug("Coming from /login. Going to home."); + return getApplicationHomePageUrl(); + } else if (null != afterLoginPage) { + log.debug("Returning to requested page: " + afterLoginPage); + return afterLoginPage; + } else { + log.debug("Don't know what to do. Go home."); + return getApplicationHomePageUrl(); + } + } + + public void redirectLoggedInUser(HttpServletResponse response) + throws IOException { + try { + DisplayMessage.setMessage(request, assembleWelcomeMessage()); + response.sendRedirect(getRedirectionUriForLoggedInUser()); LoginProcessBean.removeBean(request); } catch (IOException e) { log.debug("Problem with re-direction", e); @@ -124,18 +138,10 @@ public class LoginRedirector { return "Welcome" + backString + ", " + greeting; } - public void redirectCancellingUser() throws IOException { + public void redirectCancellingUser(HttpServletResponse response) + throws IOException { try { - if (isLoginPage(afterLoginPage)) { - log.debug("Coming from /login. Going to home."); - response.sendRedirect(getApplicationHomePageUrl()); - } else if (null != afterLoginPage) { - log.debug("Returning to requested page: " + afterLoginPage); - response.sendRedirect(afterLoginPage); - } else { - log.debug("Don't know what to do. Go home."); - response.sendRedirect(getApplicationHomePageUrl()); - } + response.sendRedirect(getRedirectionUriForCancellingUser()); LoginProcessBean.removeBean(request); } catch (IOException e) { log.debug("Problem with re-direction", e); @@ -143,8 +149,8 @@ public class LoginRedirector { } } - public void redirectUnrecognizedExternalUser(String username) - throws IOException { + public void redirectUnrecognizedExternalUser(HttpServletResponse response, + String username) throws IOException { log.debug("Redirecting unrecognized external user: " + username); DisplayMessage.setMessage(request, "VIVO cannot find a profile for your account."); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/Authenticate.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/Authenticate.java index 232e08323..9bf9847f6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/Authenticate.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/Authenticate.java @@ -124,7 +124,7 @@ public class Authenticate extends VitroHttpServlet { // Send them on their way. switch (exitState) { case NOWHERE: - new LoginRedirector(vreq, response).redirectCancellingUser(); + new LoginRedirector(vreq).redirectCancellingUser(response); break; case LOGGING_IN: showLoginScreen(vreq, response); @@ -133,7 +133,7 @@ public class Authenticate extends VitroHttpServlet { showLoginScreen(vreq, response); break; default: // LOGGED_IN: - new LoginRedirector(vreq, response).redirectLoggedInUser(); + new LoginRedirector(vreq).redirectLoggedInUser(response); break; } } catch (Exception e) {