diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 5f1ee283b7..523d6e9697 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -2239,7 +2239,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic List groups = getPermissionGroups(shortName, authorityName); for (String group : groups) { - int index = group.lastIndexOf('_'); + int index = group.indexOf(shortName) + shortName.length(); if (index != -1) { result.add(group.substring(index + 1)); diff --git a/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java index 954e6487c2..1890e2e276 100644 --- a/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -19,6 +19,8 @@ package org.alfresco.repo.site; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -67,6 +69,7 @@ import org.alfresco.service.cmr.tagging.TaggingService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.test_category.BaseSpringTestsCategory; +import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.BaseAlfrescoSpringTest; import org.alfresco.util.GUID; import org.alfresco.util.PropertyMap; @@ -659,6 +662,60 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest } } + @Override + protected String[] getConfigLocations() + { + String[] existingConfigLocations = ApplicationContextHelper.CONFIG_LOCATIONS; + + List locations = Arrays.asList(existingConfigLocations); + List mutableLocationsList = new ArrayList(locations); + mutableLocationsList.add("classpath:org/alfresco/repo/site/site-custom-context.xml"); + + String[] result = mutableLocationsList.toArray(new String[mutableLocationsList.size()]); + return result; + } + + public void testMNT_13710() throws Exception + { + final String user = "user"; + + String siteName = "test" + System.currentTimeMillis(); + + List roleList = new ArrayList(); + roleList.add("test_customrole"); + roleList.add("testCustomrole"); + + try + { + authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + + SiteInfo siteInfo = this.siteService.createSite(siteName, siteName, siteName, siteName, SiteVisibility.PUBLIC); + + createUser(user, user); + + for(String role : roleList) + { + this.siteService.setMembership(siteInfo.getShortName(), user, role); + + List list = this.siteServiceImpl.getMembersRoles(siteName, user); + + assertTrue(list.contains(role)); + } + } + finally + { + if (siteService.getSite(siteName) != null) + { + siteService.deleteSite(siteName); + } + + if (this.personService.getPerson(user) != null) + { + this.personService.deletePerson(user); + } + } + } + /** * Test listSite case sensitivity */ diff --git a/source/test-resources/org/alfresco/repo/site/sitePermissionDefinitionsWithCustomRole.xml b/source/test-resources/org/alfresco/repo/site/sitePermissionDefinitionsWithCustomRole.xml index 27b5609c58..84cdaeff79 100755 --- a/source/test-resources/org/alfresco/repo/site/sitePermissionDefinitionsWithCustomRole.xml +++ b/source/test-resources/org/alfresco/repo/site/sitePermissionDefinitionsWithCustomRole.xml @@ -36,6 +36,14 @@ + + + + + + + + \ No newline at end of file