this is a procedure to assign READ permission to a user for a space.
Was written in C#.net 2005, but is easy to know how works with ACEs an ACLs..
I traslate it for english user
Sorry for my english :lol:
private void msAssignUserReadPermisionToSpace(string spaceID, NewUserDetails user)
{
Alfresco.AccessControlWebService.Reference Ref = new Alfresco.AccessControlWebService.Reference();
Alfresco.AccessControlWebService.Store spacesS=new Alfresco.AccessControlWebService.Store();
spacesS.scheme = Alfresco.AccessControlWebService.StoreEnum.workspace;
spacesS.address = "SpacesStore";
Ref.store =spacesS;
Ref.uuid = spaceID;
Alfresco.AccessControlWebService.Predicate pred = new Alfresco.AccessControlWebService.Predicate();
pred.Items = new Object[] { Ref };
//remove the ACEs assign in the creation of the user
Alfresco.AccessControlWebService.ACE[] aceRemove ;
aceRemove = new Alfresco.AccessControlWebService.ACE[1];
aceRemove[0] = new Alfresco.AccessControlWebService.ACE();
aceRemove[0].authority = user.userName;
aceRemove[0].permission = Constants.ALL_PERMISSIONS;
aceRemove[0].accessStatus = Alfresco.AccessControlWebService.AccessStatus.declined;
Alfresco.AccessControlWebService.ACL[] aclr = controlservice.removeACEs(pred, aceRemove);
//the remove process was ok
if (aclr.Length > 0)
{
//add the read permission to the user for space
Alfresco.AccessControlWebService.ACE[] aceRead;
aceRead = new Alfresco.AccessControlWebService.ACE[1];
aceRead[0] = new Alfresco.AccessControlWebService.ACE();
aceRead[0].authority = user.userName;
aceRead[0].permission = Constants.READ;
aceRead[0].accessStatus = Alfresco.AccessControlWebService.AccessStatus.acepted;
controlservice.addACEs(pred, aceRead);
//set owner of space
//Alfresco.AccessControlWebService.OwnerResult[] or = controlservice.setOwners(pred, user.userName);
if (acls.Length > 0)
{
//OK
}
else
{
//ERROR
}
}
}
Hope this help