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

@@ -1479,6 +1479,7 @@
<property name="filePlanService" ref="FilePlanService" /> <property name="filePlanService" ref="FilePlanService" />
<property name="recordService" ref="RecordService" /> <property name="recordService" ref="RecordService" />
<property name="recordFolderService" ref="RecordFolderService" /> <property name="recordFolderService" ref="RecordFolderService" />
<property name="permissionService" ref="PermissionService"/>
</bean> </bean>
<bean id="HoldService" <bean id="HoldService"

View File

@@ -30,6 +30,7 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel; 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.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService; 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.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; 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.NamespaceService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern; import org.alfresco.service.namespace.RegexQNamePattern;
@@ -77,6 +80,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
/** Record folder service */ /** Record folder service */
private RecordFolderService recordFolderService; private RecordFolderService recordFolderService;
/** Permission service */
private PermissionService permissionService;
/** /**
* Set the file plan service * Set the file plan service
* *
@@ -117,6 +123,16 @@ public class HoldServiceImpl extends ServiceBaseImpl
this.recordFolderService = recordFolderService; 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. * 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."); 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) for (final NodeRef hold : holds)
{ {
if (!isHold(hold)) if (!isHold(hold))