RM-1463 (Item the user has read only permissions for can be added to hold in from Records Search results)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@70096 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2014-05-12 19:38:07 +00:00
parent a3d1a845d1
commit 20ad496cf5
2 changed files with 26 additions and 4 deletions

View File

@@ -30,6 +30,7 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
@@ -45,6 +46,8 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
@@ -77,6 +80,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
/** Record folder service */
private RecordFolderService recordFolderService;
/** Permission service */
private PermissionService permissionService;
/**
* Set the file plan service
*
@@ -117,6 +123,16 @@ public class HoldServiceImpl extends ServiceBaseImpl
this.recordFolderService = recordFolderService;
}
/**
* Set the permission service
*
* @param permissionService the permission services
*/
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
/**
* Behaviour unfreezes node's that will no longer he held after delete.
*
@@ -442,6 +458,11 @@ public class HoldServiceImpl extends ServiceBaseImpl
throw new AlfrescoRuntimeException("Can only add records or record folders to a hold.");
}
if (permissionService.hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.DENIED)
{
throw new AlfrescoRuntimeException("Filing permission on the record or record folder is required.");
}
for (final NodeRef hold : holds)
{
if (!isHold(hold))
@@ -453,7 +474,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
if (!getHeld(hold).contains(nodeRef))
{
// run as system to ensure we have all the appropriate premissions to perform the manipulations we require
runAsSystem(new RunAsWork<Void>()
runAsSystem(new RunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
@@ -499,7 +520,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
}
}
}
return null;
}
});