diff --git a/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/site/membership/potentialmembers.get.js b/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/site/membership/potentialmembers.get.js index 43d46918e9..fdc41151e1 100644 --- a/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/site/membership/potentialmembers.get.js +++ b/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/site/membership/potentialmembers.get.js @@ -3,7 +3,7 @@ function main() // Get the args var siteShortName = url.templateArgs.shortname, site = siteService.getSite(siteShortName), - filter = (args.filter != null) ? args.filter + " [hint:useCQ]" : (args.shortNameFilter != null) ? args.shortNameFilter : "", + filter = ((args.filter != null) ? args.filter : (args.shortNameFilter != null) ? args.shortNameFilter : "" )+ " [hint:useCQ]", maxResults = (args.maxResults == null) ? 10 : parseInt(args.maxResults, 10), authorityType = args.authorityType, zone = args.zone, diff --git a/repository/src/main/java/org/alfresco/repo/jscript/People.java b/repository/src/main/java/org/alfresco/repo/jscript/People.java index 813e6ac3b8..a2537b8e6c 100644 --- a/repository/src/main/java/org/alfresco/repo/jscript/People.java +++ b/repository/src/main/java/org/alfresco/repo/jscript/People.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2016 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -76,14 +76,14 @@ import org.springframework.extensions.surf.util.ParameterCheck; /** * Scripted People service for describing and executing actions against People & Groups. - * + * * @author davidc * @author kevinr */ public class People extends BaseScopableProcessorExtension implements InitializingBean { private static Log logger = LogFactory.getLog(People.class); - + /** Repository Service Registry */ private ServiceRegistry services; private AuthorityDAO authorityDAO; @@ -94,16 +94,16 @@ public class People extends BaseScopableProcessorExtension implements Initializi private UserNameGenerator usernameGenerator; private UserRegistrySynchronizer userRegistrySynchronizer; protected TenantService tenantService; - + private StoreRef storeRef; private ValueDerivingMapFactory valueDerivingMapFactory; private int numRetries = 10; - + private int defaultListMaxResults = 5000; private boolean honorHintUseCQ = true; - + protected static final String HINT_CQ_SUFFIX = " [hint:useCQ]"; - + public void afterPropertiesSet() throws Exception { Map > capabilityTesters = new HashMap>(5); @@ -142,10 +142,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi }); this.valueDerivingMapFactory = new ValueDerivingMapFactory(capabilityTesters); } - + /** * Set the default store reference - * + * * @param storeRef the default store reference */ public void setStoreUrl(String storeRef) @@ -156,11 +156,11 @@ public class People extends BaseScopableProcessorExtension implements Initializi throw new IllegalStateException("Default store URL can only be set once."); } this.storeRef = new StoreRef(storeRef); - } + } /** * Sets the authentication service. - * + * * @param authenticationService * the authentication service */ @@ -171,7 +171,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Set the service registry - * + * * @param serviceRegistry the service registry */ public void setServiceRegistry(ServiceRegistry serviceRegistry) @@ -188,27 +188,27 @@ public class People extends BaseScopableProcessorExtension implements Initializi { this.authorityDAO = authorityDAO; } - + /** * Set the authority service - * + * * @param authorityService The authorityService to set. */ public void setAuthorityService(AuthorityService authorityService) { this.authorityService = authorityService; } - + /** * Set the person service - * + * * @param personService The personService to set. */ public void setPersonService(PersonService personService) { this.personService = personService; } - + /** * @param contentUsageService the ContentUsageService to set */ @@ -216,7 +216,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi { this.contentUsageService = contentUsageService; } - + /** * @param tenantService the tenantService to set */ @@ -224,32 +224,32 @@ public class People extends BaseScopableProcessorExtension implements Initializi { this.tenantService = tenantService; } - + /** * Set the user name generator service - * - * @param userNameGenerator the user name generator + * + * @param userNameGenerator the user name generator */ public void setUserNameGenerator(UserNameGenerator userNameGenerator) { this.usernameGenerator = userNameGenerator; } - + /** * Set the UserRegistrySynchronizer - * + * * @param userRegistrySynchronizer UserRegistrySynchronizer */ public void setUserRegistrySynchronizer(UserRegistrySynchronizer userRegistrySynchronizer) { this.userRegistrySynchronizer = userRegistrySynchronizer; } - + public void setDefaultListMaxResults(int defaultListMaxResults) { this.defaultListMaxResults = defaultListMaxResults; } - + /** * Allows customers to choose to use Solr or Lucene rather than a canned query in * {@link #getPeople(String, int, String, boolean)} when @@ -266,21 +266,21 @@ public class People extends BaseScopableProcessorExtension implements Initializi { this.honorHintUseCQ = honorHintUseCQ; } - + /** * Delete a Person with the given username - * + * * @param username the username of the person to delete */ public void deletePerson(String username) { personService.deletePerson(username); } - + /** - * Create a Person with an optionally generated user name. + * Create a Person with an optionally generated user name. * This version doesn't notify them. - * + * * @param userName userName or null for a generated user name * @param firstName firstName * @param lastName lastName @@ -296,10 +296,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi { return createPerson(userName, firstName, lastName, emailAddress, password, setAccountEnabled, false); } - + /** * Create a Person with an optionally generated user name - * + * * @param userName userName or null for a generated user name * @param firstName firstName * @param lastName lastName @@ -310,26 +310,26 @@ public class People extends BaseScopableProcessorExtension implements Initializi * create disabled user account for created person. * @param notifyByEmail * set to 'true' to have the new user emailed to let them know - * their account details. Only applies if a username and + * their account details. Only applies if a username and * password were supplied. * @return the person node (type cm:person) created or null if the person * could not be created */ - public ScriptNode createPerson(String userName, String firstName, String lastName, String emailAddress, - String password, boolean setAccountEnabled, boolean notifyByEmail) + public ScriptNode createPerson(String userName, String firstName, String lastName, String emailAddress, + String password, boolean setAccountEnabled, boolean notifyByEmail) { ParameterCheck.mandatory("firstName", firstName); ParameterCheck.mandatory("emailAddress", emailAddress); - + ScriptNode person = null; - + // generate user name if not supplied if (userName == null) { for (int i=0; i < numRetries; i++) { userName = usernameGenerator.generateUserName(firstName, lastName, emailAddress, i); - + // create person if user name does not already exist if (!personService.personExists(userName)) { @@ -337,7 +337,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi } } } - + if (userName != null) { try @@ -348,30 +348,30 @@ public class People extends BaseScopableProcessorExtension implements Initializi { throw new AuthenticationException("User must belong to same domain as admin: " + re.getTenantA()); } - + person = createPerson(userName, firstName, lastName, emailAddress); - + if (person != null && password != null) - { + { // create account for person with the userName and password authenticationService.createAuthentication(userName, password.toCharArray()); authenticationService.setAuthenticationEnabled(userName, setAccountEnabled); - + person.save(); - + if(notifyByEmail) { personService.notifyPerson(userName, password); } } } - + return person; } /** * Enable user account. Can only be called by an Admin authority. - * + * * @param userName user name for which to enable user account */ public void enableAccount(String userName) @@ -381,10 +381,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi this.authenticationService.setAuthenticationEnabled(userName, true); } } - + /** * Disable user account. Can only be called by an Admin authority. - * + * * @param userName user name for which to disable user account */ public void disableAccount(String userName) @@ -394,23 +394,23 @@ public class People extends BaseScopableProcessorExtension implements Initializi this.authenticationService.setAuthenticationEnabled(userName, false); } } - + /** * Return true if the specified user account is enabled. - * + * * @param userName user name to test account - * + * * @return true if account enabled, false if disabled */ public boolean isAccountEnabled(String userName) { return this.authenticationService.getAuthenticationEnabled(userName); } - + /** * Change the password for the currently logged in user. * Old password must be supplied. - * + * * @param oldPassword Old user password * @param newPassword New user password */ @@ -418,15 +418,15 @@ public class People extends BaseScopableProcessorExtension implements Initializi { ParameterCheck.mandatoryString("oldPassword", oldPassword); ParameterCheck.mandatoryString("newPassword", newPassword); - + this.services.getAuthenticationService().updateAuthentication( AuthenticationUtil.getFullyAuthenticatedUser(), oldPassword.toCharArray(), newPassword.toCharArray()); } - + /** * Set a password for the given user. Note that only an administrator * can perform this action, otherwise it will be ignored. - * + * * @param userName Username to change password for * @param password Password to set */ @@ -434,7 +434,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi { ParameterCheck.mandatoryString("userName", userName); ParameterCheck.mandatoryString("password", password); - + MutableAuthenticationService authService = this.services.getAuthenticationService(); if (this.authorityService.hasAdminAuthority() && (userName.equalsIgnoreCase(authService.getCurrentUserName()) == false)) { @@ -444,31 +444,31 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Create a Person with the given user name - * + * * @param userName the user name of the person to create * @return the person node (type cm:person) created or null if the user name already exists */ public ScriptNode createPerson(String userName) { ParameterCheck.mandatoryString("userName", userName); - + ScriptNode person = null; - + PropertyMap properties = new PropertyMap(); properties.put(ContentModel.PROP_USERNAME, userName); - + if (!personService.personExists(userName)) { - NodeRef personRef = personService.createPerson(properties); - person = new ScriptNode(personRef, services, getScope()); + NodeRef personRef = personService.createPerson(properties); + person = new ScriptNode(personRef, services, getScope()); } - + return person; } - + /** * Create a Person with the given user name, firstName, lastName and emailAddress - * + * * @param userName the user name of the person to create * @return the person node (type cm:person) created or null if the user name already exists */ @@ -477,28 +477,28 @@ public class People extends BaseScopableProcessorExtension implements Initializi ParameterCheck.mandatoryString("userName", userName); ParameterCheck.mandatoryString("firstName", firstName); ParameterCheck.mandatoryString("emailAddress", emailAddress); - + ScriptNode person = null; - + PropertyMap properties = new PropertyMap(); properties.put(ContentModel.PROP_USERNAME, userName); properties.put(ContentModel.PROP_FIRSTNAME, firstName); properties.put(ContentModel.PROP_LASTNAME, lastName); properties.put(ContentModel.PROP_EMAIL, emailAddress); - + if (!personService.personExists(userName)) { NodeRef personRef = personService.createPerson(properties); - person = new ScriptNode(personRef, services, getScope()); + person = new ScriptNode(personRef, services, getScope()); } - + return person; } - + /** * Set the content quota in bytes for a person. * Only the admin authority can set this value. - * + * * @param person Person to set quota against. * @param quota As a string, in bytes, a value of "-1" means no quota is set */ @@ -509,75 +509,75 @@ public class People extends BaseScopableProcessorExtension implements Initializi this.contentUsageService.setUserQuota((String)person.getProperties().get(ContentModel.PROP_USERNAME), Long.parseLong(quota)); } } - + /** * Get the collection of people stored in the repository. * An optional filter query may be provided by which to filter the people collection. * Space separate the query terms i.e. "john bob" will find all users who's first or * second names contain the strings "john" or "bob". - * + * * @param filter filter query string by which to filter the collection of people. * If
null
then all people stored in the repository are returned - * + * * @deprecated recated see getPeople(filter, maxResults) - * + * * @return people collection as a JavaScript array */ public Scriptable getPeople(String filter) { return getPeople(filter, 0); } - + /** * Get the collection of people stored in the repository. * An optional filter query may be provided by which to filter the people collection. * Space separate the query terms i.e. "john bob" will find all users who's first or * second names contain the strings "john" or "bob". - * + * * @param filter filter query string by which to filter the collection of people. * If
null
then all people stored in the repository are returned * @param maxResults maximum results to return or all if <= 0 - * + * * @return people collection as a JavaScript array */ public Scriptable getPeople(String filter, int maxResults) { return getPeople(filter, maxResults, null, true); } - + /** * Get the collection of people stored in the repository. * An optional filter query may be provided by which to filter the people collection. * Space separate the query terms i.e. "john bob" will find all users who's first or * second names contain the strings "john" or "bob". * Method supports sorting by specifying sortBy and sortAsc params. - * + * * @param filter filter query string by which to filter the collection of people. * If
null
then all people stored in the repository are returned * @param maxResults maximum results to return or all if <= 0 * @param sortBy field for sorting * @param sortAsc sort ascending or not - * + * * @return people collection as a JavaScript array */ public Scriptable getPeople(String filter, int maxResults, String sortBy, boolean sortAsc) { return getPeoplePaging(filter, new ScriptPagingDetails(maxResults, 0), sortBy, Boolean.valueOf(sortAsc)); } - + public Scriptable getPeoplePaging(String filter, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) { List persons = getPeopleImpl(filter, pagingRequest, sortBy, sortAsc); - + Object[] peopleRefs = new Object[persons.size()]; for (int i = 0; i < peopleRefs.length; i++) { peopleRefs[i] = persons.get(i).getNodeRef(); } - + return Context.getCurrentContext().newArray(getScope(), peopleRefs); } - + protected List getPeopleImpl(String filter, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) { ParameterCheck.mandatory("pagingRequest", pagingRequest); @@ -595,9 +595,9 @@ public class People extends BaseScopableProcessorExtension implements Initializi { filter = "*"; } - + List persons = null; - + int maxResults = pagingRequest.getMaxItems(); if ((maxResults <= 0) || (maxResults > defaultListMaxResults)) { @@ -605,7 +605,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi maxResults = defaultListMaxResults; pagingRequest.setMaxItems(maxResults); } - + // In order to use a SOLR/Lucene search, we must have a non-empty filter string - see ALF-18876 if ((filter == null || filter.trim().isEmpty()) || useCQ) { @@ -614,20 +614,20 @@ public class People extends BaseScopableProcessorExtension implements Initializi else { filter = filter.trim(); - + String term = filter.replace("\"", ""); String[] tokens = term.split("(? personRefs = getPeopleImplSearch(term, tokens, pagingRequest, sortBy, sortAsc); - + if (personRefs != null) { persons = new ArrayList(personRefs.size()); @@ -647,78 +647,78 @@ public class People extends BaseScopableProcessorExtension implements Initializi } } } - + return (persons != null ? persons : new ArrayList(0)); } - + // canned query protected List getPeopleImplDB(String filter, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) { List filterProps = null; - + if ((filter != null) && (filter.length() > 0)) { filter = filter.trim(); if (! filter.equals("*")) { filter = filter.replace("\\", "").replace("\"", ""); - + // simple non-FTS filter: firstname or lastname or username starting with term (ignoring case) - + filterProps = new ArrayList(3); filterProps.add(ContentModel.PROP_FIRSTNAME); filterProps.add(ContentModel.PROP_LASTNAME); filterProps.add(ContentModel.PROP_USERNAME); } } - + // Build the sorting. The user controls the primary sort, we supply // additional ones automatically List> sort = new ArrayList>(); if ("lastName".equals(sortBy)) { - sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); } else if ("firstName".equals(sortBy)) { - sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); } else { - sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); - sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_USERNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_FIRSTNAME, sortAsc)); + sort.add(new Pair(ContentModel.PROP_LASTNAME, sortAsc)); } - + return personService.getPeople(filter, filterProps, sort, pagingRequest).getPage(); } - + // search query protected List getPeopleImplSearch(String term, String[] tokens, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) throws Throwable { List personRefs = null; - + Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); - + int propIndex = term.indexOf(':'); - + int maxResults = pagingRequest.getMaxItems(); int skipCount = pagingRequest.getSkipCount(); - + SearchParameters params = new SearchParameters(); params.addQueryTemplate("_PERSON", "|%firstName OR |%lastName OR |%userName"); params.setDefaultFieldName("_PERSON"); params.setExcludeTenantFilter(getExcludeTenantFilter()); params.setPermissionEvaluation(getPermissionEvaluationMode()); - + StringBuilder query = new StringBuilder(256); - + query.append("TYPE:\"").append(ContentModel.TYPE_PERSON).append("\" AND ("); - + if (tokens.length == 1) { // single word with no field will go against _PERSON and expand @@ -791,7 +791,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi // fts-alfresco property search i.e. "location:maidenhead" propIndex = token.lastIndexOf(':'); query.append(token.substring(0, propIndex + 1)).append('"') - .append(token.substring(propIndex + 1)).append('"').append(' '); + .append(token.substring(propIndex + 1)).append('"').append(' '); propertySearch = true; } @@ -809,20 +809,20 @@ public class People extends BaseScopableProcessorExtension implements Initializi } } query.append(")"); - - // define the search parameters - params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); - params.addStore(this.storeRef); - params.setQuery(query.toString()); - - if (logger.isDebugEnabled()) - { - if ((sortBy != null) && (! sortBy.isEmpty())) - { - logger.debug("getPeopleImplSearch: ignoring sortBy ("+sortBy+")- not yet supported by model for search"); - } - } - + + // define the search parameters + params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + params.addStore(this.storeRef); + params.setQuery(query.toString()); + + if (logger.isDebugEnabled()) + { + if ((sortBy != null) && (! sortBy.isEmpty())) + { + logger.debug("getPeopleImplSearch: ignoring sortBy ("+sortBy+")- not yet supported by model for search"); + } + } + /* not yet supported (default property index tokenisation mode = true) if ("lastName".equals(sortBy)) { @@ -843,57 +843,57 @@ public class People extends BaseScopableProcessorExtension implements Initializi params.addSort("@{http://www.alfresco.org/model/content/1.0}userName", sortAsc); } */ - - if (maxResults > 0) - { - params.setLimitBy(LimitBy.FINAL_SIZE); - params.setLimit(maxResults); - } - - if (skipCount > 0) - { - params.setSkipCount(skipCount); - } - - ResultSet results = null; - try - { - results = services.getSearchService().query(params); - - personRefs = getSortedPeopleObjects(results.getNodeRefs(), sortBy, sortAsc); - - if (start != null) - { - logger.debug("getPeople: search - "+personRefs.size()+" items (in "+(System.currentTimeMillis()-start)+" msecs)"); - } - } - catch (Throwable err) - { - if (logger.isDebugEnabled()) - { - logger.debug("Failed to execute people search: " + query.toString(), err); - } - - throw err; - } - finally - { - if (results != null) - { - results.close(); - } - } - - return personRefs; + + if (maxResults > 0) + { + params.setLimitBy(LimitBy.FINAL_SIZE); + params.setLimit(maxResults); + } + + if (skipCount > 0) + { + params.setSkipCount(skipCount); + } + + ResultSet results = null; + try + { + results = services.getSearchService().query(params); + + personRefs = getSortedPeopleObjects(results.getNodeRefs(), sortBy, sortAsc); + + if (start != null) + { + logger.debug("getPeople: search - "+personRefs.size()+" items (in "+(System.currentTimeMillis()-start)+" msecs)"); + } + } + catch (Throwable err) + { + if (logger.isDebugEnabled()) + { + logger.debug("Failed to execute people search: " + query.toString(), err); + } + + throw err; + } + finally + { + if (results != null) + { + results.close(); + } + } + + return personRefs; } - + private List getSortedPeopleObjects(List peopleRefs, final String sortBy, Boolean sortAsc) { if (sortBy == null) { return peopleRefs; } - + //make copy of peopleRefs because it can be unmodifiable list. List sortedPeopleRefs = new ArrayList(peopleRefs); final Collator col = Collator.getInstance(I18NUtil.getLocale()); @@ -962,37 +962,37 @@ public class People extends BaseScopableProcessorExtension implements Initializi } }); - + return sortedPeopleRefs; } - + /** * Gets the Person given the username - * + * * @param username the username of the person to get - * @return the person node (type cm:person) or null if no such person exists + * @return the person node (type cm:person) or null if no such person exists */ public ScriptNode getPerson(final String username) { - NodeRef personRef = null; + NodeRef personRef = null; ParameterCheck.mandatory("Username", username); try { - personRef = personService.getPersonOrNull(username); + personRef = personService.getPersonOrNull(username); } catch(AccessDeniedException e) { - // ok, just return null to indicate not found + // ok, just return null to indicate not found } return personRef == null ? null : new ScriptNode(personRef, services, getScope()); } - + /** * Faster helper when the script just wants to build the Full name for a person. * Avoids complete getProperties() retrieval for a cm:person. - * + * * @param username the username of the person to get Full name for * @return full name for a person or null if the user does not exist in the system. */ @@ -1013,7 +1013,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Gets the Group given the group name - * + * * @param groupName name of group to get * @return the group node (type usr:authorityContainer) or null if no such group exists */ @@ -1028,10 +1028,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi } return group; } - + /** * Deletes a group from the system. - * + * * @param group The group to delete */ public void deleteGroup(ScriptNode group) @@ -1043,33 +1043,33 @@ public class People extends BaseScopableProcessorExtension implements Initializi authorityService.deleteAuthority(groupName); } } - + /** * Create a new root level group with the specified unique name - * + * * @param groupName The unique group name to create - NOTE: do not prefix with "GROUP_" - * + * * @return the group reference if successful or null if failed */ public ScriptNode createGroup(String groupName) { return createGroup(null, groupName); } - + /** * Create a new group with the specified unique name - * + * * @param parentGroup The parent group node - can be null for a root level group * @param groupName The unique group name to create - NOTE: do not prefix with "GROUP_" - * + * * @return the group reference if successful or null if failed */ public ScriptNode createGroup(ScriptNode parentGroup, String groupName) { ParameterCheck.mandatoryString("GroupName", groupName); - + ScriptNode group = null; - + String actualName = services.getAuthorityService().getName(AuthorityType.GROUP, groupName); if (authorityService.authorityExists(actualName) == false) { @@ -1084,13 +1084,13 @@ public class People extends BaseScopableProcessorExtension implements Initializi } group = getGroup(result); } - + return group; } - + /** * Add an authority (a user or group) to a group container as a new child - * + * * @param parentGroup The parent container group * @param authority The authority (user or group) to add */ @@ -1113,10 +1113,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi authorityService.addAuthority(parentGroupName, authorityName); } } - + /** * Remove an authority (a user or group) from a group - * + * * @param parentGroup The parent container group * @param authority The authority (user or group) to remove */ @@ -1139,10 +1139,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi authorityService.removeAuthority(parentGroupName, authorityName); } } - + /** * Gets the members (people) of a group (including all sub-groups) - * + * * @param group the group to retrieve members for * * @return members of the group as a JavaScript array @@ -1156,10 +1156,10 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Gets the members (people) of a group - * + * * @param group the group to retrieve members for * @param recurse recurse into sub-groups - * + * * @return the members of the group as a JavaScript array */ public Scriptable getMembers(ScriptNode group, boolean recurse) @@ -1168,12 +1168,12 @@ public class People extends BaseScopableProcessorExtension implements Initializi Object[] members = getContainedAuthorities(group, AuthorityType.USER, recurse); return Context.getCurrentContext().newArray(getScope(), members); } - + /** * Gets the groups that contain the specified authority - * + * * @param person the user (cm:person) to get the containing groups for - * + * * @return the containing groups as a JavaScript array */ public Scriptable getContainerGroups(ScriptNode person) @@ -1191,17 +1191,17 @@ public class People extends BaseScopableProcessorExtension implements Initializi ScriptNode group = getGroup(authority); if (group != null) { - parents[i++] = group; + parents[i++] = group; } } return Context.getCurrentContext().newArray(getScope(), parents); } - + /** * Return true if the specified user is an Administrator authority. - * + * * @param person to test - * + * * @return true if an admin, false otherwise */ public boolean isAdmin(ScriptNode person) @@ -1212,9 +1212,9 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Return true if the specified user is an guest authority. - * + * * @param person to test - * + * * @return true if an admin, false otherwise */ public boolean isGuest(ScriptNode person) @@ -1225,7 +1225,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Gets a map of capabilities (boolean assertions) for the given person. - * + * * @param person * the person * @return the capability map @@ -1237,12 +1237,12 @@ public class People extends BaseScopableProcessorExtension implements Initializi retVal.putAll(this.valueDerivingMapFactory.getMap(person)); return retVal; } - + /** * Return a map of the Person properties that are marked as immutable for the given user. * This enables a script to interogate which properties are dealt with by an external * system such as LDAP and should not be mutable in any client UI. - * + * * @param username String * * @return ScriptableHashMap @@ -1260,17 +1260,17 @@ public class People extends BaseScopableProcessorExtension implements Initializi /** * Get Contained Authorities - * + * * @param container authority containers * @param type authority type to filter by * @param recurse recurse into sub-containers - * + * * @return contained authorities */ private Object[] getContainedAuthorities(ScriptNode container, AuthorityType type, boolean recurse) { Object[] members = null; - + if (container.getQNameType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER)) { String groupName = (String)container.getProperties().get(ContentModel.PROP_AUTHORITY_NAME); @@ -1285,7 +1285,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi ScriptNode group = getGroup(authority); if (group != null) { - members[i++] = group; + members[i++] = group; } } else if (authorityType.equals(AuthorityType.USER)) @@ -1293,22 +1293,22 @@ public class People extends BaseScopableProcessorExtension implements Initializi ScriptNode person = getPerson(authority); if (person != null) { - members[i++] = person; + members[i++] = person; } } } } - + return members != null ? members : new Object[0]; } - + public boolean getExcludeTenantFilter() { return false; } - + public PermissionEvaluationMode getPermissionEvaluationMode() { return PermissionEvaluationMode.EAGER; } -} +} \ No newline at end of file