From d898b5a770efd5dc816dc11f5e41e37ab5e689bd Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Tue, 22 May 2012 06:57:02 +0000 Subject: [PATCH] RM-314: Records Management Administrator can't access FilePlan * needed to check the capability, not the read permission * added helper method to capability service when checking a single capability git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.0@36663 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-ui-evaluators-context.xml | 1 + .../capability/CapabilityService.java | 9 +++++++++ .../capability/CapabilityServiceImpl.java | 18 ++++++++++++++++++ .../jscript/app/JSONConversionComponent.java | 16 ++++++++++++++-- 4 files changed, 42 insertions(+), 2 deletions(-) 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 cad53c7cb1..67d894400f 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 @@ -7,6 +7,7 @@ class="org.alfresco.module.org_alfresco_module_rm.jscript.app.JSONConversionComponent" parent="baseJsonConversionComponent"> + getCapabilitiesAccessState(NodeRef nodeRef, List capabilityNames); + + /** + * Helper method to get the access state for a single capability. + * + * @param nodeRef + * @param capabilityName + * @return + */ + AccessStatus getCapabilityAccessState(NodeRef nodeRef, String capabilityName); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java index b33d1b509c..3ab90eb468 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java @@ -18,6 +18,7 @@ */ package org.alfresco.module.org_alfresco_module_rm.capability; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -136,5 +137,22 @@ public class CapabilityServiceImpl implements CapabilityService } return answer; } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService#getCapabilityAccessState(org.alfresco.service.cmr.repository.NodeRef, java.lang.String) + */ + @Override + public AccessStatus getCapabilityAccessState(NodeRef nodeRef, String capabilityName) + { + AccessStatus result = AccessStatus.UNDETERMINED; + Capability capability = getCapability(capabilityName); + if (capability != null) + { + List list = Collections.singletonList(capabilityName); + Map map = getCapabilitiesAccessState(nodeRef, list); + result = map.get(capability); + } + return result; + } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java index ee8ca3dcfb..29f526faa2 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java @@ -23,6 +23,7 @@ import java.util.List; import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService; +import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; @@ -40,6 +41,9 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC /** Records management service */ private RecordsManagementService recordsManagementService; + /** Capability service */ + private CapabilityService capabilityService; + /** Indicators */ private List indicators = new ArrayList(); @@ -54,6 +58,14 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC this.recordsManagementService = recordsManagementService; } + /** + * @param capabilityService capability service + */ + public void setCapabilityService(CapabilityService capabilityService) + { + this.capabilityService = capabilityService; + } + /** * @param indicator registered indicator */ @@ -82,8 +94,8 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC // Get the node reference for convenience NodeRef nodeRef = nodeInfo.getNodeRef(); - - if (AccessStatus.ALLOWED.equals(permissionService.hasPermission(nodeRef, RMPermissionModel.READ_RECORDS)) == true) + + if (AccessStatus.ALLOWED.equals(capabilityService.getCapabilityAccessState(nodeRef, RMPermissionModel.VIEW_RECORDS)) == true) { // Indicate whether the node is a RM object or not boolean isFilePlanComponent = recordsManagementService.isFilePlanComponent(nodeInfo.getNodeRef());