diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml index 41141a66d0..20a64262aa 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml @@ -685,5 +685,16 @@ + + + + + + RECORD + + + + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index b6d5e36a28..9a41a1ff83 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -475,16 +475,6 @@ public class RecordServiceImpl implements RecordService, { ParameterCheck.mandatory("NodeRef", nodeRef); - // first we do a sanity check to ensure that the user has at least write permissions on the record - if (permissionService.hasPermission(nodeRef, PermissionService.WRITE) != AccessStatus.ALLOWED) - { - throw new AccessDeniedException( - "Cannot hide record, because the user '" - + AuthenticationUtil.getRunAsUser() - + "' does not have write permissions on the record '" - + nodeRef.toString() + "'."); - } - // do the work of hiding the record as the system user AuthenticationUtil.runAsSystem(new RunAsWork() { diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java index 6fff0a6233..60681b35b0 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java @@ -274,6 +274,8 @@ public class RecordServiceImplTest extends BaseRMTestCase assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_RECORD_METADATA)); + Capability filling = capabilityService.getCapability("FileRecords"); + assertEquals(AccessStatus.ALLOWED, filling.hasPermission(dmDocument)); Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); assertEquals(AccessStatus.ALLOWED, editRecordMetadata.hasPermission(dmDocument)); @@ -284,6 +286,43 @@ public class RecordServiceImplTest extends BaseRMTestCase return null; } }, dmCollaborator); + + // check the consumer's permissions are correct for the newly created document + doTestInTransaction(new Test() + { + @Override + public Void run() + { + checkPermissions(READ_RECORDS, + AccessStatus.ALLOWED, // file plan + AccessStatus.ALLOWED, // unfiled container + AccessStatus.DENIED, // record category + AccessStatus.DENIED, // record folder + AccessStatus.ALLOWED); // doc/record + + checkPermissions(FILING, + AccessStatus.DENIED, // file plan + AccessStatus.DENIED, // unfiled container + AccessStatus.DENIED, // record category + AccessStatus.DENIED, // record folder + AccessStatus.DENIED); // doc/record + + assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); + assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_RECORD_METADATA)); + + Capability filling = capabilityService.getCapability("FileRecords"); + assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument)); + + Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); + assertEquals(AccessStatus.DENIED, editRecordMetadata.hasPermission(dmDocument)); + + Capability updateProperties = capabilityService.getCapability("UpdateProperties"); + assertEquals(AccessStatus.DENIED, updateProperties.hasPermission(dmDocument)); + + + return null; + } + }, dmConsumer); } public void testCreateRecordNoLink() throws Exception