diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index a1c7152d0d..ddbb398b5d 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -446,6 +446,8 @@ + + @@ -1102,7 +1104,7 @@ org.alfresco.module.org_alfresco_module_rm.record.RecordService.isDeclared=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.record.RecordService.isFiled=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecord=RM_ALLOW - org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecordFromContent=RM.Create.0 + org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecordFromContent=RM.Create.0 org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecordFromCopy=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.record.RecordService.file=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.record.RecordService.isPropertyEditable=RM.Read.0 diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluator.java index 56cb735b6a..06a89aa953 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluator.java @@ -22,13 +22,9 @@ import java.util.List; import org.alfresco.module.org_alfresco_module_rm.jscript.app.BaseEvaluator; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.permissions.AccessDeniedException; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.RegexQNamePattern; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; /** * Evaluates whether the node in question is transferring is either a transfer or accession. @@ -37,9 +33,6 @@ import org.apache.commons.logging.LogFactory; */ public class TransferEvaluator extends BaseEvaluator { - /** Logger */ - private static Log logger = LogFactory.getLog(TransferEvaluator.class); - /** indicates whether we are looking for accessions or transfers */ private boolean transferAccessionIndicator = false; @@ -62,18 +55,8 @@ public class TransferEvaluator extends BaseEvaluator NodeRef transfer = getTransferNodeRef(nodeRef); if (transfer != null) { - try - { - boolean actual = ((Boolean)nodeService.getProperty(transfer, RecordsManagementModel.PROP_TRANSFER_ACCESSION_INDICATOR)).booleanValue(); - result = (actual == transferAccessionIndicator); - } - catch (AccessDeniedException ade) - { - logger.info("The user '" - + AuthenticationUtil.getFullyAuthenticatedUser() - + "' does not have permissions on the node '" - + transfer + "'."); - } + boolean actual = ((Boolean)nodeService.getProperty(transfer, RecordsManagementModel.PROP_TRANSFER_ACCESSION_INDICATOR)).booleanValue(); + result = (actual == transferAccessionIndicator); } return result; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java index dd9a9d0b9e..2c4dbcea54 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java @@ -32,6 +32,7 @@ import java.util.Set; import org.alfresco.error.AlfrescoRuntimeException; 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.role.FilePlanRoleService; import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl; import org.alfresco.repo.node.NodeServicePolicies; @@ -76,6 +77,12 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl /** Authority service */ private AuthorityService authorityService; + /** File plan role service */ + private FilePlanRoleService filePlanRoleService; + + /** File plan service */ + private FilePlanService filePlanService; + /** Logger */ private static final Log LOGGER = LogFactory.getLog(FilePlanPermissionServiceImpl.class); @@ -168,6 +175,46 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl this.authorityService = authorityService; } + /** + * Gets the file plan role service + * + * @return The file plan role service + */ + public FilePlanRoleService getFilePlanRoleService() + { + return this.filePlanRoleService; + } + + /** + * Sets the file plan role service + * + * @param filePlanRoleService The file plan role service to set + */ + public void setFilePlanRoleService(FilePlanRoleService filePlanRoleService) + { + this.filePlanRoleService = filePlanRoleService; + } + + /** + * Gets the file plan service + * + * @return The file plan service + */ + public FilePlanService getFilePlanService() + { + return this.filePlanService; + } + + /** + * Sets the file plan service + * + * @param filePlanService The file plan service to set + */ + public void setFilePlanService(FilePlanService filePlanService) + { + this.filePlanService = filePlanService; + } + /** * @see org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionService#setupRecordCategoryPermissions(org.alfresco.service.cmr.repository.NodeRef) */ @@ -256,7 +303,13 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl public void onCreateTransfer(final ChildAssociationRef childAssocRef) { mandatory("childAssocRef", childAssocRef); - setupPermissions(childAssocRef.getParentRef(), childAssocRef.getChildRef()); + NodeRef childRef = childAssocRef.getChildRef(); + setupPermissions(childAssocRef.getParentRef(), childRef); + // Give read permissions for all RM roles for the transfer folders (see RM-1800). + // This behaviour will be changed once the add manage permission option is added in the UI for the transfers containers. + NodeRef filePlan = getFilePlanService().getFilePlan(childRef); + String allRoles = getFilePlanRoleService().getAllRolesContainerGroup(filePlan); + getPermissionService().setPermission(childRef, allRoles, READ_RECORDS, true); } /**