diff --git a/source/java/org/alfresco/web/app/servlet/BaseServlet.java b/source/java/org/alfresco/web/app/servlet/BaseServlet.java index abe930bf0e..636acd288d 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseServlet.java @@ -223,6 +223,19 @@ public abstract class BaseServlet extends HttpServlet */ public static void redirectToLoginPage(HttpServletRequest req, HttpServletResponse res, ServletContext sc) throws IOException + { + redirectToLoginPage(req, res, sc, AuthenticationHelper.getRemoteUser(sc, req) == null); + } + + /** + * Redirect to the Login page - saving the current URL which can be redirected back later + * once the user has successfully completed the authentication process. + * @param sendRedirect allow a redirect status code to be set? If false redirect + * will be via markup rather than status code (to allow the status code to be used for handshake + * responses etc. + */ + public static void redirectToLoginPage(HttpServletRequest req, HttpServletResponse res, ServletContext sc, boolean sendRedirect) + throws IOException { // authentication failed - so end servlet execution and redirect to login page StringBuilder redirectURL = new StringBuilder(1024).append(req.getContextPath()).append(FACES_SERVLET).append( @@ -267,7 +280,7 @@ public abstract class BaseServlet extends HttpServlet } // If external authentication isn't in use (e.g. proxied share authentication), it's safe to return a redirect to the client - if (AuthenticationHelper.getRemoteUser(sc, req) == null) + if (sendRedirect) { res.sendRedirect(redirectURL.toString()); } diff --git a/source/java/org/alfresco/web/app/servlet/KerberosAuthenticationFilter.java b/source/java/org/alfresco/web/app/servlet/KerberosAuthenticationFilter.java index 85ddf61c44..aa33478c86 100644 --- a/source/java/org/alfresco/web/app/servlet/KerberosAuthenticationFilter.java +++ b/source/java/org/alfresco/web/app/servlet/KerberosAuthenticationFilter.java @@ -25,9 +25,7 @@ import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.springframework.extensions.config.ConfigService; import org.alfresco.repo.SessionUser; import org.alfresco.repo.webdav.auth.BaseKerberosAuthenticationFilter; import org.alfresco.service.cmr.repository.NodeRef; @@ -38,6 +36,7 @@ import org.alfresco.web.bean.repository.User; import org.alfresco.web.config.ClientConfigElement; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.extensions.config.ConfigService; /** * Kerberos Authentication Filter Class @@ -160,6 +159,17 @@ public class KerberosAuthenticationFilter extends BaseKerberosAuthenticationFilt return true; } } + + /* (non-Javadoc) + * @see org.alfresco.repo.webdav.auth.BaseSSOAuthenticationFilter#writeLoginPageLink(javax.servlet.ServletContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void writeLoginPageLink(ServletContext context, HttpServletRequest req, HttpServletResponse resp) + throws IOException + { + BaseServlet.redirectToLoginPage(req, resp, context, false); + } + /* (non-Javadoc) * @see org.alfresco.repo.webdav.auth.BaseNTLMAuthenticationFilter#getLogger() diff --git a/source/java/org/alfresco/web/app/servlet/NTLMAuthenticationFilter.java b/source/java/org/alfresco/web/app/servlet/NTLMAuthenticationFilter.java index 2bb2d648ff..ebd35bea75 100644 --- a/source/java/org/alfresco/web/app/servlet/NTLMAuthenticationFilter.java +++ b/source/java/org/alfresco/web/app/servlet/NTLMAuthenticationFilter.java @@ -25,9 +25,7 @@ import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.springframework.extensions.config.ConfigService; import org.alfresco.repo.SessionUser; import org.alfresco.repo.webdav.auth.BaseNTLMAuthenticationFilter; import org.alfresco.service.cmr.repository.NodeRef; @@ -38,6 +36,7 @@ import org.alfresco.web.bean.repository.User; import org.alfresco.web.config.ClientConfigElement; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.extensions.config.ConfigService; /** * Web-client NTLM Authentication Filter Class @@ -155,6 +154,16 @@ public class NTLMAuthenticationFilter extends BaseNTLMAuthenticationFilter } } + /* (non-Javadoc) + * @see org.alfresco.repo.webdav.auth.BaseSSOAuthenticationFilter#writeLoginPageLink(javax.servlet.ServletContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void writeLoginPageLink(ServletContext context, HttpServletRequest req, HttpServletResponse resp) + throws IOException + { + BaseServlet.redirectToLoginPage(req, resp, context, false); + } + /* (non-Javadoc) * @see org.alfresco.repo.webdav.auth.BaseNTLMAuthenticationFilter#getLogger() */ diff --git a/source/web/jsp/users/email-space-users.jsp b/source/web/jsp/users/email-space-users.jsp index 1dafe80736..ddc5588b6c 100644 --- a/source/web/jsp/users/email-space-users.jsp +++ b/source/web/jsp/users/email-space-users.jsp @@ -30,9 +30,10 @@ function pageLoaded() { - if (document.getElementById("dialog:dialog-body:subject") != null) - { - document.getElementById("dialog:dialog-body:subject").focus(); + var subjectField = document.getElementById("dialog:dialog-body:subject"); + if (subjectField != null) + { + subjectField.focus(); } okEnabled = !document.getElementById("dialog:finish-button").disabled; checkButtonState();