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

@@ -194,7 +194,7 @@
</property> </property>
</bean> </bean>
<bean id="rmTransferService_security" parent="baseSecurity"> <bean id="rmTransferService_security" parent="baseSecurity">
<property name="objectDefinitionSource"> <property name="objectDefinitionSource">
<value> <value>
<![CDATA[ <![CDATA[
@@ -380,7 +380,7 @@
<bean id="filePlanService" <bean id="filePlanService"
parent="baseService" parent="baseService"
class="org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanServiceImpl"> class="org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanServiceImpl">
<property name="nodeDAO" ref="nodeDAO"/> <property name="nodeDAO" ref="nodeDAO"/>
<property name="filePlanPermissionService" ref="FilePlanPermissionService" /> <property name="filePlanPermissionService" ref="FilePlanPermissionService" />
</bean> </bean>
@@ -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))
@@ -453,7 +474,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
if (!getHeld(hold).contains(nodeRef)) if (!getHeld(hold).contains(nodeRef))
{ {
// run as system to ensure we have all the appropriate premissions to perform the manipulations we require // 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 @Override
public Void doWork() throws Exception public Void doWork() throws Exception
@@ -499,7 +520,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
} }
} }
} }
return null; return null;
} }
}); });