Merged V3.2E to HEAD

17246: ETHREEOH-3208: User profiles for users authenticated by immutable subsystems are now read only
         - Introduced MutableAuthenticationService interface, only implemented by Alfresco native authentication service
         - Split out those methods from AuthenticationService that mutate the user store and added isAuthenticationMutable()
         - Now both Alfresco Explorer and Share user profile / password edit link rendering is conditional on isAuthenticationMutable
         - Works with authentication chain containing mixture of internally and externally authenticated users
   17247: Fix failing unit tests
         - rm-public-services-security-context.xml needed to be brought in line with public-services-security-context.xml (and will forever more!)
   17248: ETHREEOH-1593: alfUser cookie value should be base 64 encoded to allow for non-ASCII characters
   17253: *RECORD ONLY* ETHREEOH-2885: web.xml must conform to the schema to work on JBoss

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18098 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2010-01-18 15:32:57 +00:00
parent 3daa7fbf67
commit 9576bd46f5
8 changed files with 49 additions and 30 deletions

View File

@@ -56,7 +56,7 @@ import org.alfresco.service.cmr.repository.TemplateService;
import org.alfresco.service.cmr.rule.RuleService;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.MutableAuthenticationService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.web.app.Application;
@@ -208,12 +208,12 @@ public class NavigationBean implements Serializable
/**
* @param authService The AuthenticationService to set.
*/
public void setAuthenticationService(AuthenticationService authService)
public void setAuthenticationService(MutableAuthenticationService authService)
{
this.authService = authService;
}
protected AuthenticationService getAuthService()
protected MutableAuthenticationService getAuthService()
{
if (authService == null)
this.authService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getAuthenticationService();
@@ -1024,7 +1024,9 @@ public class NavigationBean implements Serializable
*/
public boolean isAllowUserConfig()
{
return this.clientConfig.getAllowUserConfig();
// For correct behaviour, we ask the authentication chain whether this particular user is mutable
return this.clientConfig.getAllowUserConfig()
&& this.authService.isAuthenticationMutable(this.authService.getCurrentUserName());
}
@@ -1157,7 +1159,7 @@ public class NavigationBean implements Serializable
UserPreferencesBean preferences;
/** The Authentication service bean reference */
transient private AuthenticationService authService;
transient private MutableAuthenticationService authService;
/** The PermissionService reference */
transient private PermissionService permissionService;