diff --git a/config/alfresco/authentication-services-context.xml b/config/alfresco/authentication-services-context.xml
index 94d289be04..087d737d53 100644
--- a/config/alfresco/authentication-services-context.xml
+++ b/config/alfresco/authentication-services-context.xml
@@ -172,9 +172,6 @@
-
-
-
@@ -240,8 +237,11 @@
-
-
+
+
+
+
+
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
index c85e1f3aac..ebf289b554 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
@@ -16,7 +16,6 @@
*/
package org.alfresco.repo.security.authentication;
-import org.alfresco.repo.security.permissions.PermissionServiceSPI;
import org.alfresco.service.cmr.security.AuthenticationService;
public class AuthenticationServiceImpl implements AuthenticationService
@@ -27,8 +26,6 @@ public class AuthenticationServiceImpl implements AuthenticationService
TicketComponent ticketComponent;
- PermissionServiceSPI permissionServiceSPI;
-
public AuthenticationServiceImpl()
{
super();
@@ -49,11 +46,6 @@ public class AuthenticationServiceImpl implements AuthenticationService
this.authenticationComponent = authenticationComponent;
}
- public void setPermissionServiceSPI(PermissionServiceSPI permissionServiceSPI)
- {
- this.permissionServiceSPI = permissionServiceSPI;
- }
-
public void createAuthentication(String userName, char[] password) throws AuthenticationException
{
authenticationDao.createUser(userName, password);
@@ -73,7 +65,6 @@ public class AuthenticationServiceImpl implements AuthenticationService
public void deleteAuthentication(String userName) throws AuthenticationException
{
authenticationDao.deleteUser(userName);
- permissionServiceSPI.deletePermissions(authenticationDao.getUserNamesAreCaseSensitive() ? userName: userName.toLowerCase());
}
public boolean getAuthenticationEnabled(String userName) throws AuthenticationException
diff --git a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
index a5559e29b6..84e57ed845 100644
--- a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
+++ b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
@@ -26,19 +26,17 @@ import java.util.Map;
import java.util.Set;
import org.alfresco.model.ContentModel;
-import org.alfresco.repo.search.QueryParameterDefImpl;
-import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
+import org.alfresco.repo.security.permissions.PermissionServiceSPI;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
-import org.alfresco.service.cmr.search.QueryParameterDefinition;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.ResultSetRow;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
+import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.QName;
@@ -56,10 +54,12 @@ public class PersonServiceImpl implements PersonService
private NodeService nodeService;
- private DictionaryService dictionaryService;
-
private SearchService searchService;
+
+ private AuthorityService authorityService;
+ private PermissionServiceSPI permissionServiceSPI;
+
private NamespacePrefixResolver namespacePrefixResolver;
private boolean createMissingPeople;
@@ -285,11 +285,25 @@ public class PersonServiceImpl implements PersonService
public void deletePerson(String userName)
{
NodeRef personNodeRef = getPersonOrNull(userName);
+
+ // delete the person
if (personNodeRef != null)
{
nodeService.deleteNode(personNodeRef);
}
+ // translate username based on user name case sensitivity
+ String authorityName = userNamesAreCaseSensitive ? userName : userName.toLowerCase();
+
+ // remove user from any containing authorities
+ Set containerAuthorities = authorityService.getContainingAuthorities(null, userName, true);
+ for (String containerAuthority : containerAuthorities)
+ {
+ authorityService.removeAuthority(containerAuthority, authorityName);
+ }
+
+ // remove any user permissions
+ permissionServiceSPI.deletePermissions(authorityName);
}
public Set getAllPeople()
@@ -333,16 +347,21 @@ public class PersonServiceImpl implements PersonService
this.createMissingPeople = createMissingPeople;
}
- public void setDictionaryService(DictionaryService dictionaryService)
- {
- this.dictionaryService = dictionaryService;
- }
-
public void setNamespacePrefixResolver(NamespacePrefixResolver namespacePrefixResolver)
{
this.namespacePrefixResolver = namespacePrefixResolver;
}
+ public void setAuthorityService(AuthorityService authorityService)
+ {
+ this.authorityService = authorityService;
+ }
+
+ public void setPermissionServiceSPI(PermissionServiceSPI permissionServiceSPI)
+ {
+ this.permissionServiceSPI = permissionServiceSPI;
+ }
+
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;