From 679ada2c09e0694e92ad9375d94b1c92260e8223 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Sat, 28 Jun 2014 10:10:50 +0000 Subject: [PATCH] RM-1562: Can't move a record from the collaboration site into the file plan git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@75189 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../capability/policy/MovePolicy.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/MovePolicy.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/MovePolicy.java index f802ed6302..ef087cae9e 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/MovePolicy.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/MovePolicy.java @@ -20,7 +20,10 @@ package org.alfresco.module.org_alfresco_module_rm.capability.policy; import net.sf.acegisecurity.vote.AccessDecisionVoter; +import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; +import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.security.AccessStatus; import org.aopalliance.intercept.MethodInvocation; public class MovePolicy extends AbstractBasePolicy @@ -47,7 +50,23 @@ public class MovePolicy extends AbstractBasePolicy if ((movee != null) && (destination != null)) { - return getCapabilityService().getCapability("Move").evaluate(movee, destination); + // check that we aren't trying to move something from the DM into RM + if (nodeService.hasAspect(movee, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT)) + { + return getCapabilityService().getCapability("Move").evaluate(movee, destination); + } + else + { + if (nodeService.hasAspect(destination, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT) && + permissionService.hasPermission(destination, RMPermissionModel.FILING).equals(AccessStatus.ALLOWED)) + { + return AccessDecisionVoter.ACCESS_GRANTED; + } + else + { + return AccessDecisionVoter.ACCESS_DENIED; + } + } } else {