diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml index 63e9230dc3..65153f5118 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml @@ -10,6 +10,12 @@ + + + + + @@ -64,12 +70,6 @@ - - - - - @@ -87,5 +87,11 @@ + + + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml new file mode 100644 index 0000000000..e2b39bb2a2 --- /dev/null +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties index e95382a867..d982a5fa63 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties @@ -94,4 +94,8 @@ capability.CreateModifyDestroyClassificationGuides.title=Create Modify Destroy C capability.UpgradeDowngradeAndDeclassifyRecords.title=Upgrade Downgrade And Declassify Records capability.UpdateExemptionCategories.title=Update Exemption Categories capability.MapClassificationGuideMetadata.title=Map Classification Guide Metadata -capability.CreateModifyDestroyTimeframes.title=Create Modify Destroy Time frames \ No newline at end of file +capability.CreateModifyDestroyTimeframes.title=Create Modify Destroy Time frames + +# Rules +capability.group.rules.title=Rules +capability.ManageRules.title=Manage Rules \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml index 9b48652471..1a289e7d41 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml @@ -81,6 +81,7 @@ + @@ -154,6 +155,7 @@ + @@ -403,6 +405,10 @@ + + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml index e50344cb66..9050fac6d5 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml @@ -340,5 +340,8 @@ + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json b/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json index 32d77a3f50..c355faa115 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json @@ -184,7 +184,8 @@ "UpgradeDowngradeAndDeclassifyRecords", "UpdateExemptionCategories", "MapClassificationGuideMetadata", - "ManageAccessControls" + "ManageAccessControls", + "ManageRules" ] } ] diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java index c77de708dc..41d2fbd4e0 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java @@ -112,6 +112,9 @@ public class RMv21CapabilityPatch extends AbstractModuleComponent FilePlanRoleService.ROLE_POWER_USER, FilePlanRoleService.ROLE_RECORDS_MANAGER, FilePlanRoleService.ROLE_SECURITY_OFFICER); + addCapability(filePlan, + "ManageRules", + FilePlanRoleService.ROLE_ADMIN); } @@ -139,11 +142,23 @@ public class RMv21CapabilityPatch extends AbstractModuleComponent for (String roleName : roles) { Role role = filePlanRoleService.getRole(filePlan, roleName); + if (role != null) { + // get the roles current capabilities Set capabilities = role.getCapabilities(); - capabilities.add(capability); - filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities); + + // only update if the capability is missing + if (capabilities.contains(capability) == false) + { + if (logger.isDebugEnabled() == true) + { + logger.debug(" ... adding capability " + capabilityName + " to role " + role.getName()); + } + + capabilities.add(capability); + filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities); + } } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java index d4fa48190c..66530648b6 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java @@ -345,8 +345,11 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, String user = AuthenticationUtil.getFullyAuthenticatedUser(); authorityService.addAuthority(role.getRoleGroupName(), user); - // add the dynamic admin authority - authorityService.addAuthority(role.getRoleGroupName(), filePlanAuthenticationService.getRmAdminUserName()); + if (filePlanAuthenticationService.getRmAdminUserName().equals(user) == false) + { + // add the dynamic admin authority + authorityService.addAuthority(role.getRoleGroupName(), filePlanAuthenticationService.getRmAdminUserName()); + } } } }