mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.1 to HEAD
12899: Fix for ETHREEOH-1175 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13527 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -36,6 +36,7 @@ import org.alfresco.repo.security.authority.AuthorityDAO;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.search.LimitBy;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchParameters;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
@@ -304,6 +305,11 @@ public final class People extends BaseScopableProcessorExtension
|
||||
params.setLanguage(SearchService.LANGUAGE_LUCENE);
|
||||
params.addStore(this.storeRef);
|
||||
params.setQuery(query.toString());
|
||||
if (maxResults > 0)
|
||||
{
|
||||
params.setLimitBy(LimitBy.FINAL_SIZE);
|
||||
params.setLimit(maxResults);
|
||||
}
|
||||
|
||||
ResultSet results = null;
|
||||
try
|
||||
@@ -325,12 +331,6 @@ public final class People extends BaseScopableProcessorExtension
|
||||
{
|
||||
people = new Object[0];
|
||||
}
|
||||
else if (maxResults > 0 && people.length > maxResults)
|
||||
{
|
||||
Object[] copy = new Object[maxResults];
|
||||
System.arraycopy(people, 0, copy, 0, maxResults);
|
||||
people = copy;
|
||||
}
|
||||
|
||||
return Context.getCurrentContext().newArray(getScope(), people);
|
||||
}
|
||||
|
@@ -83,6 +83,9 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
/** Activity tool */
|
||||
private static final String ACTIVITY_TOOL = "siteService";
|
||||
|
||||
private static final String SITE_PREFIX = "site_";
|
||||
private static final int GROUP_PREFIX_LENGTH = SITE_PREFIX.length() + PermissionService.GROUP_PREFIX.length();
|
||||
|
||||
private String sitesXPath;
|
||||
|
||||
/** Messages */
|
||||
@@ -402,8 +405,7 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
/**
|
||||
* Helper method to get the name of the site group
|
||||
*
|
||||
* @param shortName
|
||||
* site short name
|
||||
* @param shortName site short name
|
||||
* @return String site group name
|
||||
*/
|
||||
public String getSiteGroup(String shortName, boolean withGroupPrefix)
|
||||
@@ -413,7 +415,7 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
{
|
||||
sb.append(PermissionService.GROUP_PREFIX);
|
||||
}
|
||||
sb.append("site_");
|
||||
sb.append(SITE_PREFIX);
|
||||
sb.append(shortName);
|
||||
return sb.toString();
|
||||
}
|
||||
@@ -421,14 +423,11 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
/**
|
||||
* Helper method to get the name of the site permission group
|
||||
*
|
||||
* @param shortName
|
||||
* site short name
|
||||
* @param permission
|
||||
* permission name
|
||||
* @param shortName site short name
|
||||
* @param permission permission name
|
||||
* @return String site permission group name
|
||||
*/
|
||||
public String getSiteRoleGroup(String shortName, String permission,
|
||||
boolean withGroupPrefix)
|
||||
public String getSiteRoleGroup(String shortName, String permission, boolean withGroupPrefix)
|
||||
{
|
||||
return getSiteGroup(shortName, withGroupPrefix) + "_" + permission;
|
||||
}
|
||||
@@ -436,8 +435,7 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
/**
|
||||
* Gets a sites parent folder based on it's short name ]
|
||||
*
|
||||
* @param shortName
|
||||
* site short name
|
||||
* @param shortName site short name
|
||||
* @return NodeRef the site's parent
|
||||
*/
|
||||
private NodeRef getSiteParent(String shortName)
|
||||
@@ -739,17 +737,17 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(java.lang.String, java.lang.String, java.lang.String)
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(java.lang.String, java.lang.String, java.lang.String, int)
|
||||
*/
|
||||
public Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter)
|
||||
public Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter, int size)
|
||||
{
|
||||
return listMembers(shortName, nameFilter, roleFilter, false);
|
||||
return listMembers(shortName, nameFilter, roleFilter, size, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(String, String, String, boolean)
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(String, String, String, int, boolean)
|
||||
*/
|
||||
public Map<String, String> listMembers(String shortName, final String nameFilter, final String roleFilter, final boolean collapseGroups)
|
||||
public Map<String, String> listMembers(String shortName, final String nameFilter, final String roleFilter, final int size, final boolean collapseGroups)
|
||||
{
|
||||
// MT share - for activity service system callback
|
||||
if (tenantService.isEnabled() && (AuthenticationUtil.SYSTEM_USER_NAME.equals(AuthenticationUtil.getRunAsUser())) && tenantService.isTenantName(shortName))
|
||||
@@ -761,17 +759,17 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
{
|
||||
public Map<String, String> doWork() throws Exception
|
||||
{
|
||||
return listMembersImpl(sName, nameFilter, roleFilter, collapseGroups);
|
||||
return listMembersImpl(sName, nameFilter, roleFilter, size, collapseGroups);
|
||||
}
|
||||
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||
}
|
||||
else
|
||||
{
|
||||
return listMembersImpl(shortName, nameFilter, roleFilter, collapseGroups);
|
||||
return listMembersImpl(shortName, nameFilter, roleFilter, size, collapseGroups);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, String> listMembersImpl(String shortName, String nameFilter, String roleFilter, boolean collapseGroups)
|
||||
private Map<String, String> listMembersImpl(String shortName, String nameFilter, String roleFilter, int size, boolean collapseGroups)
|
||||
{
|
||||
NodeRef siteNodeRef = getSiteNodeRef(shortName);
|
||||
if (siteNodeRef == null)
|
||||
@@ -779,50 +777,72 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
throw new SiteServiceException(MSG_SITE_NO_EXIST, new Object[]{shortName});
|
||||
}
|
||||
|
||||
Map<String, String> members = new HashMap<String, String>(23);
|
||||
Map<String, String> members = new HashMap<String, String>(32);
|
||||
|
||||
Set<String> permissions = permissionService.getSettablePermissions(SiteModel.TYPE_SITE);
|
||||
Set<String> permissions = this.permissionService.getSettablePermissions(SiteModel.TYPE_SITE);
|
||||
for (String permission : permissions)
|
||||
{
|
||||
if (filterMatch(roleFilter, permission) == true)
|
||||
if (roleFilter == null || roleFilter.length() == 0 || roleFilter.equals(permission))
|
||||
{
|
||||
String groupName = getSiteRoleGroup(shortName, permission, true);
|
||||
Set<String> users = this.authorityService.getContainedAuthorities(AuthorityType.USER, groupName, true);
|
||||
for (String user : users)
|
||||
{
|
||||
if (filterMatch(nameFilter, user) == true)
|
||||
boolean addUser = true;
|
||||
if (nameFilter != null && nameFilter.length() != 0 && !nameFilter.equals(user))
|
||||
{
|
||||
// found a filter - does it match person first/last name?
|
||||
addUser = matchPerson(nameFilter, user);
|
||||
}
|
||||
if (addUser)
|
||||
{
|
||||
// Add the user and their permission to the returned map
|
||||
members.put(user, permission);
|
||||
|
||||
// break on max size limit reached
|
||||
if (members.size() == size) break;
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> groups = this.authorityService.getContainedAuthorities(AuthorityType.GROUP, groupName, true);
|
||||
for (String group : groups)
|
||||
{
|
||||
if (collapseGroups == false)
|
||||
{
|
||||
if (filterMatch(nameFilter, group) == true)
|
||||
boolean addGroup = true;
|
||||
if (nameFilter != null && nameFilter.length() != 0)
|
||||
{
|
||||
// Add the group and their permission to the returned map
|
||||
members.put(group, permission);
|
||||
}
|
||||
// found a filter - does it match Group name part?
|
||||
if (group.substring(GROUP_PREFIX_LENGTH).toLowerCase().contains(nameFilter.toLowerCase()))
|
||||
{
|
||||
members.put(group, permission);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Set<String> subUsers = this.authorityService.getContainedAuthorities(AuthorityType.USER, group, false);
|
||||
for (String subUser : subUsers)
|
||||
{
|
||||
if (filterMatch(nameFilter, subUser) == true)
|
||||
boolean addUser = true;
|
||||
if (nameFilter != null && nameFilter.length() != 0 && !nameFilter.equals(subUser))
|
||||
{
|
||||
// found a filter - does it match person first/last name?
|
||||
addUser = matchPerson(nameFilter, subUser);
|
||||
}
|
||||
if (addUser)
|
||||
{
|
||||
// Add the collapsed user into the members list if they do not already appear in the list
|
||||
if (members.containsKey(subUser) == false)
|
||||
{
|
||||
members.put(subUser, permission);
|
||||
}
|
||||
|
||||
// break on max size limit reached
|
||||
if (members.size() == size) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -831,22 +851,27 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to calculate whether a value matches a filter or not
|
||||
*
|
||||
* @param filter filter
|
||||
* @param value value
|
||||
* @return boolean true if the value matches the filter, false otherwise
|
||||
* Helper to
|
||||
* @param filter
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
private boolean filterMatch(String filter, String value)
|
||||
private boolean matchPerson(String filter, String username)
|
||||
{
|
||||
boolean result = false;
|
||||
if (filter == null ||
|
||||
filter.length() == 0 ||
|
||||
filter.equals(value) == true)
|
||||
boolean addUser = false;
|
||||
NodeRef personRef = this.personService.getPerson(username);
|
||||
Map<QName, Serializable> props = this.nodeService.getProperties(personRef);
|
||||
String firstName = (String)props.get(ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String)props.get(ContentModel.PROP_LASTNAME);
|
||||
if (firstName != null && firstName.toLowerCase().indexOf(filter.toLowerCase()) != -1)
|
||||
{
|
||||
result = true;
|
||||
addUser = true;
|
||||
}
|
||||
return result;
|
||||
else if (lastName != null && lastName.toLowerCase().indexOf(filter.toLowerCase()) != -1)
|
||||
{
|
||||
addUser = true;
|
||||
}
|
||||
return addUser;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -381,7 +381,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
this.siteService.createSite(TEST_SITE_PRESET, "testMembership", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PRIVATE);
|
||||
|
||||
// Get the members of the site and check that user one is a manager
|
||||
Map<String, String> members = this.siteService.listMembers("testMembership", null, null);
|
||||
Map<String, String> members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(1, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -392,7 +392,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
this.siteService.setMembership("testMembership", USER_THREE, SiteModel.SITE_COLLABORATOR);
|
||||
|
||||
// Get the members of the site
|
||||
members = this.siteService.listMembers("testMembership", null, null);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(3, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -403,14 +403,14 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
assertEquals(SiteModel.SITE_COLLABORATOR, members.get(USER_THREE));
|
||||
|
||||
// Get only the site managers
|
||||
members = this.siteService.listMembers("testMembership", null, SiteModel.SITE_MANAGER);
|
||||
members = this.siteService.listMembers("testMembership", null, SiteModel.SITE_MANAGER, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(1, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
assertEquals(SiteModel.SITE_MANAGER, members.get(USER_ONE));
|
||||
|
||||
// Get only user two
|
||||
members = this.siteService.listMembers("testMembership", USER_TWO, null);
|
||||
members = this.siteService.listMembers("testMembership", USER_TWO, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(1, members.size());
|
||||
assertTrue(members.containsKey(USER_TWO));
|
||||
@@ -420,7 +420,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
this.siteService.setMembership("testMembership", USER_TWO, SiteModel.SITE_COLLABORATOR);
|
||||
|
||||
// Check the members of the site
|
||||
members = this.siteService.listMembers("testMembership", null, null);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(3, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -434,7 +434,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
this.siteService.removeMembership("testMembership", USER_TWO);
|
||||
|
||||
// Check the members of the site
|
||||
members = this.siteService.listMembers("testMembership", null, null);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(2, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -677,7 +677,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
this.siteService.createSite(TEST_SITE_PRESET, "testMembership", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PRIVATE);
|
||||
|
||||
// Get the members of the site and check that user one is a manager
|
||||
Map<String, String> members = this.siteService.listMembers("testMembership", null, null);
|
||||
Map<String, String> members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(1, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -686,7 +686,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
// Add a group
|
||||
this.siteService.setMembership("testMembership", this.groupTwo, SiteModel.SITE_CONSUMER);
|
||||
// - is the group in the list of all members?
|
||||
members = this.siteService.listMembers("testMembership", null, null);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(2, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -694,7 +694,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
assertTrue(members.containsKey(this.groupTwo));
|
||||
assertEquals(SiteModel.SITE_CONSUMER, members.get(this.groupTwo));
|
||||
// - is the user in the expanded list?
|
||||
members = this.siteService.listMembers("testMembership", null, null, true);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0, true);
|
||||
assertNotNull(members);
|
||||
assertEquals(3, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -718,7 +718,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
// Add a group member as an explicit member
|
||||
this.siteService.setMembership("testMembership", USER_THREE, SiteModel.SITE_COLLABORATOR);
|
||||
// - check the explicit members list
|
||||
members = this.siteService.listMembers("testMembership", null, null);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0);
|
||||
assertNotNull(members);
|
||||
assertEquals(3, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
@@ -728,7 +728,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
assertTrue(members.containsKey(this.groupTwo));
|
||||
assertEquals(SiteModel.SITE_CONSUMER, members.get(this.groupTwo));
|
||||
// - check the expanded members list
|
||||
members = this.siteService.listMembers("testMembership", null, null, true);
|
||||
members = this.siteService.listMembers("testMembership", null, null, 0, true);
|
||||
assertNotNull(members);
|
||||
assertEquals(3, members.size());
|
||||
assertTrue(members.containsKey(USER_ONE));
|
||||
|
@@ -299,11 +299,13 @@ public class Site implements Serializable
|
||||
*
|
||||
* @param nameFilter user name filter
|
||||
* @param roleFilter user role filter
|
||||
* @param size max results size crop if >0
|
||||
*
|
||||
* @return ScriptableHashMap<String, String> list of members of site with their roles
|
||||
*/
|
||||
public ScriptableHashMap<String, String> listMembers(String nameFilter, String roleFilter)
|
||||
public ScriptableHashMap<String, String> listMembers(String nameFilter, String roleFilter, int size)
|
||||
{
|
||||
Map<String, String> members = this.siteService.listMembers(getShortName(), nameFilter, roleFilter);
|
||||
Map<String, String> members = this.siteService.listMembers(getShortName(), nameFilter, roleFilter, size);
|
||||
|
||||
ScriptableHashMap<String, String> result = new ScriptableHashMap<String, String>();
|
||||
result.putAll(members);
|
||||
|
@@ -92,9 +92,10 @@ public interface SiteService
|
||||
* @param shortName site short name
|
||||
* @param nameFilter name filter
|
||||
* @param roleFilter role filter
|
||||
* @param size max results size crop if >0
|
||||
* @return Map<String, String> the authority name and their role
|
||||
*/
|
||||
Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter);
|
||||
Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter, int size);
|
||||
|
||||
/**
|
||||
* List the members of the site. This includes both users and groups if collapseGroups is set to false, otherwise all
|
||||
@@ -103,10 +104,11 @@ public interface SiteService
|
||||
* @param shortName site short name
|
||||
* @param nameFilter name filter
|
||||
* @param roleFilter role filter
|
||||
* @param size max results size crop if >0
|
||||
* @param collapseGroups true if collapse member groups into user list, false otherwise
|
||||
* @return Map<String, String> the authority name and their role
|
||||
*/
|
||||
Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter, boolean collapseGroups);
|
||||
Map<String, String> listMembers(String shortName, String nameFilter, String roleFilter, int size, boolean collapseGroups);
|
||||
|
||||
/**
|
||||
* Gets the role of the specified user.
|
||||
|
Reference in New Issue
Block a user