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 f660c5a7ba
commit 4c8615b9c0

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,20 +513,44 @@ 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;
}
}
} }
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); permissionService.setPermission(nodeRef, authority, permission, true);
} }
}
/** /**
* @see org.alfresco.module.org_alfresco_module_rm.security.RecordsManagementSecurityService#deletePermission(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.lang.String) * @see org.alfresco.module.org_alfresco_module_rm.security.RecordsManagementSecurityService#deletePermission(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.lang.String)