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 6a0a0f7922..4e1382c967 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 @@ -448,6 +448,7 @@ + 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 de661acafc..82e9388d28 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.role.FilePlanRoleService; import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl; import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.JavaBehaviour; @@ -42,6 +43,8 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.AccessPermission; +import org.alfresco.service.cmr.security.AuthorityService; +import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.OwnableService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.namespace.QName; @@ -69,6 +72,9 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl /** Policy component */ private PolicyComponent policyComponent; + /** Authority service */ + private AuthorityService authorityService; + /** Logger */ private static final Log LOGGER = LogFactory.getLog(FilePlanPermissionServiceImpl.class); @@ -141,6 +147,26 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl this.ownableService = ownableService; } + /** + * Gets the authority service + * + * @return The authority service + */ + public AuthorityService getAuthorityService() + { + return this.authorityService; + } + + /** + * Sets the authority service + * + * @param authorityService The authority service + */ + public void setAuthorityService(AuthorityService authorityService) + { + this.authorityService = authorityService; + } + /** * @see org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionService#setupRecordCategoryPermissions(org.alfresco.service.cmr.repository.NodeRef) */ @@ -259,9 +285,10 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl if (!inheritanceAllowed) { - // set extended reader permissions getPermissionService().setPermission(nodeRef, EXTENDED_READER, READ_RECORDS, true); getPermissionService().setPermission(nodeRef, EXTENDED_WRITER, FILING, true); + String adminRole = getAdminRole(nodeRef); + getPermissionService().setPermission(nodeRef, adminRole, RMPermissionModel.FILING, true); } // remove owner @@ -273,6 +300,16 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl } } + private String getAdminRole(NodeRef nodeRef) + { + NodeRef filePlan = getFilePlan(nodeRef); + if (filePlan == null) + { + throw new AlfrescoRuntimeException("The file plan could not be found for the give node: '" + nodeRef + "'."); + } + return authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId()); + } + private boolean isInheritanceAllowed(NodeRef nodeRef, Boolean isParentNodeFilePlan) { return !(isFilePlan(nodeRef) || isTransfer(nodeRef) || isHold(nodeRef) || isUnfiledRecordsContainer(nodeRef) || (isRecordCategory(nodeRef) && isTrue(isParentNodeFilePlan))); diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java index eccdc9b5cf..7929c67cca 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FilePlanPermissionServiceImplTest.java @@ -31,6 +31,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.AccessPermission; import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.AuthorityType; import org.springframework.extensions.webscripts.GUID; /** @@ -1235,11 +1236,8 @@ public class FilePlanPermissionServiceImplTest extends BaseRMTestCase assertEquals(RMPermissionModel.READ_RECORDS, accessPermissions.get(ExtendedReaderDynamicAuthority.EXTENDED_READER)); assertTrue(accessPermissions.containsKey(ExtendedWriterDynamicAuthority.EXTENDED_WRITER)); assertEquals(RMPermissionModel.FILING, accessPermissions.get(ExtendedWriterDynamicAuthority.EXTENDED_WRITER)); - // FIXME!!! - /* - String allRoles = authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId()); - assertTrue(accessPermissions.containsKey(allRoles)); - assertEquals(RMPermissionModel.FILING, accessPermissions.get(allRoles)); - */ + String adminRole = authorityService.getName(AuthorityType.GROUP, FilePlanRoleService.ROLE_ADMIN + filePlan.getId()); + assertTrue(accessPermissions.containsKey(adminRole)); + assertEquals(RMPermissionModel.FILING, accessPermissions.get(adminRole)); } } diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java index 529d5fffd1..bfeaf13b69 100755 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java @@ -47,8 +47,6 @@ public class RecordServiceImplUnitTest extends BaseUnitTest private static QName TYPE_MY_FILE_PLAN = generateQName(); private static QName ASPECT_FOR_FILE_PLAN = generateQName(); - //private static QName ASPECT_FOR_MY_FILE_PLAN = generateQName(); - //private static QName ASPECT_FOR_BOTH = generateQName(); @InjectMocks private RecordServiceImpl recordService; @@ -83,39 +81,4 @@ public class RecordServiceImplUnitTest extends BaseUnitTest assertEquals(1, types.size()); assertTrue(types.contains(TYPE_FILE_PLAN)); } - - @Test - public void testGetRecordMetadataAspects() - { -// // register a couple of record meta-data aspects -// recordService.registerRecordMetadataAspect(ASPECT_FOR_FILE_PLAN, TYPE_FILE_PLAN); -// recordService.registerRecordMetadataAspect(ASPECT_FOR_MY_FILE_PLAN, TYPE_MY_FILE_PLAN); -// recordService.registerRecordMetadataAspect(ASPECT_FOR_BOTH, TYPE_FILE_PLAN); -// recordService.registerRecordMetadataAspect(ASPECT_FOR_BOTH, TYPE_MY_FILE_PLAN); -// -// Set set = recordService.getRecordMetadataAspects(filePlanComponent); -// assertNotNull(set); -// assertEquals(2, set.size()); -// assertTrue(set.contains(ASPECT_FOR_FILE_PLAN)); -// assertTrue(set.contains(ASPECT_FOR_BOTH)); -// -// set = recordService.getRecordMetadataAspects(nonStandardFilePlanComponent); -// assertNotNull(set); -// assertEquals(2, set.size()); -// assertTrue(set.contains(ASPECT_FOR_MY_FILE_PLAN)); -// assertTrue(set.contains(ASPECT_FOR_BOTH)); -// -// set = recordService.getRecordMetadataAspects(TYPE_FILE_PLAN); -// assertNotNull(set); -// assertEquals(2, set.size()); -// assertTrue(set.contains(ASPECT_FOR_FILE_PLAN)); -// assertTrue(set.contains(ASPECT_FOR_BOTH)); -// -// set = recordService.getRecordMetadataAspects(TYPE_MY_FILE_PLAN); -// assertNotNull(set); -// assertEquals(2, set.size()); -// assertTrue(set.contains(ASPECT_FOR_MY_FILE_PLAN)); -// assertTrue(set.contains(ASPECT_FOR_BOTH)); - - } }