RM-1089: CLONE - Group added twice for default categories

RM-1314: Permissions can be added twice



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@73619 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2014-06-12 06:39:15 +00:00
parent e5d7c77ce6
commit 8b17d89b84

View File

@@ -55,7 +55,8 @@ import org.apache.commons.logging.LogFactory;
*/ */
@BehaviourBean @BehaviourBean
public class FilePlanPermissionServiceImpl extends ServiceBaseImpl public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
implements FilePlanPermissionService implements FilePlanPermissionService,
RMPermissionModel
{ {
/** Permission service */ /** Permission service */
protected PermissionService permissionService; protected PermissionService permissionService;
@@ -512,19 +513,43 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
/** /**
* Set the permission, taking into account that filing is a superset of read * Set the permission, taking into account that filing is a superset of read
* *
* @param nodeRef * @param nodeRef node reference
* @param authority * @param authority authority
* @param permission * @param permission permission
*/ */
private void setPermissionImpl(NodeRef nodeRef, String authority, String permission) private void setPermissionImpl(NodeRef nodeRef, String authority, String permission)
{ {
if (RMPermissionModel.FILING.equals(permission)) boolean hasRead = false;
boolean hasFilling = false;
Set<AccessPermission> perms = permissionService.getAllSetPermissions(nodeRef);
for (AccessPermission perm : perms)
{ {
// Remove record read permission before adding filing permission if (perm.getAuthority().equals(authority))
permissionService.deletePermission(nodeRef, authority, RMPermissionModel.READ_RECORDS); {
if (perm.getPermission().equals(FILING))
{
hasFilling = true;
}
else if (perm.getPermission().equals(READ_RECORDS))
{
hasRead = true;
}
}
} }
permissionService.setPermission(nodeRef, authority, permission, true); if (FILING.equals(permission) && hasRead)
{
// remove read permission
permissionService.deletePermission(nodeRef, authority, RMPermissionModel.READ_RECORDS);
hasRead = false;
}
if (!hasRead && !hasFilling)
{
// add permission
permissionService.setPermission(nodeRef, authority, permission, true);
}
} }
/** /**