diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index ba4497b389..3868c829a8 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -419,6 +419,7 @@ login_err_password_length=Password must be between {0} and {1} characters in len login_err_password_chars=Password can only contain characters or digits. login_err_username_length=Username must be between {0} and {1} characters in length. login_err_username_chars=Username can only contain characters or digits. +login_err_permissions=The user does not have enough permissions to view the item, please attempt login as a different user. loggedout_details=You have been logged out of Alfresco. relogin=Re-login to Alfresco no_access=You have no access to Alfresco. diff --git a/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java b/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java index ed4f3e447a..e4e9c222df 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java @@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletResponse; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.repo.content.filestore.FileContentReader; +import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; @@ -56,6 +57,7 @@ import org.alfresco.service.namespace.QName; import org.alfresco.util.URLDecoder; import org.alfresco.util.URLEncoder; import org.alfresco.web.app.Application; +import org.alfresco.web.bean.LoginBean; import org.apache.commons.logging.Log; /** @@ -229,6 +231,11 @@ public abstract class BaseDownloadContentServlet extends BaseServlet if (logger.isDebugEnabled()) logger.debug("Redirecting to login page..."); + // TODO: replace with serviceRegistry.getAuthorityService().hasGuestAuthority() from 3.1E + if (!AuthenticationUtil.getFullyAuthenticatedUser().equals(AuthenticationUtil.getGuestUserName())) + { + req.getSession().setAttribute(LoginBean.LOGIN_NOPERMISSIONS, Boolean.TRUE); + } redirectToLoginPage(req, res, getServletContext()); } else diff --git a/source/java/org/alfresco/web/bean/LoginBean.java b/source/java/org/alfresco/web/bean/LoginBean.java index d9e82003d2..7c4df32930 100644 --- a/source/java/org/alfresco/web/bean/LoginBean.java +++ b/source/java/org/alfresco/web/bean/LoginBean.java @@ -444,12 +444,14 @@ public class LoginBean implements Serializable private static final String MSG_ERROR_LOGIN_MAXUSERS = "error_login_maxusers"; private static final String MSG_NONE = "none"; + public static final String MSG_ERROR_LOGIN_NOPERMISSIONS = "login_err_permissions"; public static final String MSG_USERNAME_LENGTH = "login_err_username_length"; public static final String MSG_PASSWORD_LENGTH = "login_err_password_length"; public static final String MSG_USER_ERR = "user_err_user_name"; - public static final String LOGIN_REDIRECT_KEY = "_alfRedirect"; - public static final String LOGIN_EXTERNAL_AUTH= "_alfExternalAuth"; + public static final String LOGIN_REDIRECT_KEY = "_alfRedirect"; + public static final String LOGIN_EXTERNAL_AUTH = "_alfExternalAuth"; + public static final String LOGIN_NOPERMISSIONS = "_alfNoPermissions"; /** user name */ private String username = null; @@ -474,6 +476,4 @@ public class LoginBean implements Serializable /** The user preferences bean reference */ protected UserPreferencesBean preferences; - - -} +} \ No newline at end of file diff --git a/source/web/jsp/login.jsp b/source/web/jsp/login.jsp index 0839da8b50..c3d45f0e1f 100644 --- a/source/web/jsp/login.jsp +++ b/source/web/jsp/login.jsp @@ -31,7 +31,9 @@ <%@ page import="org.alfresco.web.app.servlet.BaseServlet" %> <%@ page import="org.alfresco.web.app.servlet.AuthenticationHelper" %> <%@ page import="org.alfresco.web.ui.common.PanelGenerator" %> +<%@ page import="org.alfresco.web.ui.common.Utils" %> <%@ page import="org.alfresco.web.app.Application" %> +<%@ page import="org.alfresco.web.bean.LoginBean" %> <%@ page import="javax.faces.context.FacesContext" %> <%@ page import="javax.servlet.http.Cookie" %> <%@ page import="java.util.Locale" %> @@ -74,6 +76,13 @@ // set locale for JSF framework usage fc.getViewRoot().setLocale(locale); + + // set permissions error if applicable + if (session.getAttribute(LoginBean.LOGIN_NOPERMISSIONS) != null) + { + Utils.addErrorMessage(Application.getMessage(fc, LoginBean.MSG_ERROR_LOGIN_NOPERMISSIONS)); + session.setAttribute(LoginBean.LOGIN_NOPERMISSIONS, null); + } %> <%-- load a bundle of properties I18N strings here --%>