mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
JavaScript API for Groups modification
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5399 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -78,6 +78,9 @@
|
|||||||
<property name="authorityDAO">
|
<property name="authorityDAO">
|
||||||
<ref bean="authorityDAO"/>
|
<ref bean="authorityDAO"/>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="authorityService">
|
||||||
|
<ref bean="AuthorityService"/>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="sessionScript" parent="baseScriptImplementation" class="org.alfresco.repo.jscript.Session">
|
<bean id="sessionScript" parent="baseScriptImplementation" class="org.alfresco.repo.jscript.Session">
|
||||||
|
@@ -33,6 +33,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
import org.alfresco.service.cmr.security.AuthorityService;
|
import org.alfresco.service.cmr.security.AuthorityService;
|
||||||
import org.alfresco.service.cmr.security.AuthorityType;
|
import org.alfresco.service.cmr.security.AuthorityType;
|
||||||
import org.alfresco.service.cmr.security.PersonService;
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
|
import org.alfresco.util.ParameterCheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scripted People service for describing and executing actions against People & Groups.
|
* Scripted People service for describing and executing actions against People & Groups.
|
||||||
@@ -44,6 +45,7 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
/** Repository Service Registry */
|
/** Repository Service Registry */
|
||||||
private ServiceRegistry services;
|
private ServiceRegistry services;
|
||||||
private AuthorityDAO authorityDAO;
|
private AuthorityDAO authorityDAO;
|
||||||
|
private AuthorityService authorityService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the service registry
|
* Set the service registry
|
||||||
@@ -65,6 +67,14 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
this.authorityDAO = authorityDAO;
|
this.authorityDAO = authorityDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param authorityService The authorityService to set.
|
||||||
|
*/
|
||||||
|
public void setAuthorityService(AuthorityService authorityService)
|
||||||
|
{
|
||||||
|
this.authorityService = authorityService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Person given the username
|
* Gets the Person given the username
|
||||||
*
|
*
|
||||||
@@ -73,6 +83,7 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
*/
|
*/
|
||||||
public Node getPerson(String username)
|
public Node getPerson(String username)
|
||||||
{
|
{
|
||||||
|
ParameterCheck.mandatoryString("Username", username);
|
||||||
Node person = null;
|
Node person = null;
|
||||||
PersonService personService = services.getPersonService();
|
PersonService personService = services.getPersonService();
|
||||||
if (personService.personExists(username))
|
if (personService.personExists(username))
|
||||||
@@ -91,6 +102,7 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
*/
|
*/
|
||||||
public Node getGroup(String groupName)
|
public Node getGroup(String groupName)
|
||||||
{
|
{
|
||||||
|
ParameterCheck.mandatoryString("GroupName", groupName);
|
||||||
Node group = null;
|
Node group = null;
|
||||||
NodeRef groupRef = authorityDAO.getAuthorityNodeRefOrNull(groupName);
|
NodeRef groupRef = authorityDAO.getAuthorityNodeRefOrNull(groupName);
|
||||||
if (groupRef != null)
|
if (groupRef != null)
|
||||||
@@ -100,6 +112,114 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a group from the system.
|
||||||
|
*
|
||||||
|
* @param group The group to delete
|
||||||
|
*/
|
||||||
|
public void deleteGroup(Node group)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("Group", group);
|
||||||
|
if (group.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
|
{
|
||||||
|
String groupName = (String)group.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
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 Node 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 Node createGroup(Node parentGroup, String groupName)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatoryString("GroupName", groupName);
|
||||||
|
|
||||||
|
Node group = null;
|
||||||
|
|
||||||
|
String actualName = services.getAuthorityService().getName(AuthorityType.GROUP, groupName);
|
||||||
|
if (authorityService.authorityExists(groupName) == false)
|
||||||
|
{
|
||||||
|
String parentGroupName = null;
|
||||||
|
if (parentGroup != null)
|
||||||
|
{
|
||||||
|
parentGroupName = (String)parentGroup.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
}
|
||||||
|
String result = authorityService.createAuthority(AuthorityType.GROUP, parentGroupName, groupName);
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
public void addAuthority(Node parentGroup, Node authority)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("Authority", authority);
|
||||||
|
ParameterCheck.mandatory("ParentGroup", parentGroup);
|
||||||
|
if (parentGroup.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
|
{
|
||||||
|
String parentGroupName = (String)parentGroup.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
String authorityName;
|
||||||
|
if (authority.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
|
{
|
||||||
|
authorityName = (String)authority.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
authorityName = (String)authority.getProperties().get(ContentModel.PROP_USERNAME);
|
||||||
|
}
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
public void removeAuthority(Node parentGroup, Node authority)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("Authority", authority);
|
||||||
|
ParameterCheck.mandatory("ParentGroup", parentGroup);
|
||||||
|
if (parentGroup.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
|
{
|
||||||
|
String parentGroupName = (String)parentGroup.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
String authorityName;
|
||||||
|
if (authority.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
|
{
|
||||||
|
authorityName = (String)authority.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
authorityName = (String)authority.getProperties().get(ContentModel.PROP_USERNAME);
|
||||||
|
}
|
||||||
|
authorityService.removeAuthority(parentGroupName, authorityName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the members (people) of a group (including all sub-groups)
|
* Gets the members (people) of a group (including all sub-groups)
|
||||||
*
|
*
|
||||||
@@ -109,6 +229,7 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
*/
|
*/
|
||||||
public Node[] getMembers(Node group)
|
public Node[] getMembers(Node group)
|
||||||
{
|
{
|
||||||
|
ParameterCheck.mandatory("Group", group);
|
||||||
return getContainedAuthorities(group, AuthorityType.USER, true);
|
return getContainedAuthorities(group, AuthorityType.USER, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,6 +242,7 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
*/
|
*/
|
||||||
public Node[] getMembers(Node group, boolean recurse)
|
public Node[] getMembers(Node group, boolean recurse)
|
||||||
{
|
{
|
||||||
|
ParameterCheck.mandatory("Group", group);
|
||||||
return getContainedAuthorities(group, AuthorityType.USER, recurse);
|
return getContainedAuthorities(group, AuthorityType.USER, recurse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +259,6 @@ public final class People extends BaseScopableScriptImplementation
|
|||||||
Node[] members = null;
|
Node[] members = null;
|
||||||
if (container.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
if (container.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER))
|
||||||
{
|
{
|
||||||
AuthorityService authorityService = services.getAuthorityService();
|
|
||||||
String groupName = (String)container.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
String groupName = (String)container.getProperties().get(ContentModel.PROP_AUTHORITY_NAME);
|
||||||
Set<String> authorities = authorityService.getContainedAuthorities(type, groupName, !recurse);
|
Set<String> authorities = authorityService.getContainedAuthorities(type, groupName, !recurse);
|
||||||
members = new Node[authorities.size()];
|
members = new Node[authorities.size()];
|
||||||
|
Reference in New Issue
Block a user