From c9cbd99f5eeafc6368514fa5abc05a483a201353 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Fri, 30 Jan 2015 17:27:49 +0000 Subject: [PATCH] RM-1800 (Transfers are not displayed for non-rm-admin users) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.3@94481 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-capabilities-condition-context.xml | 12 ++++- .../rm-capabilities-disposition-context.xml | 7 +-- .../rm-capabilities-group-context.xml | 11 ++++ .../rm-ui-evaluators-context.xml | 5 +- .../ChildPermissionCapabilityCondition.java | 53 +++++++++++++++++++ .../FillingOnChildrenCapabilityCondition.java | 40 ++++++++++++++ .../ReadOnChildrenCapabilityCondition.java | 40 ++++++++++++++ 7 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ChildPermissionCapabilityCondition.java create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/FillingOnChildrenCapabilityCondition.java create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ReadOnChildrenCapabilityCondition.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml index ba58d29116..0f8a8467c4 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml @@ -52,6 +52,16 @@ class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FillingCapabilityCondition"> + + + + + + @@ -208,7 +218,7 @@ - + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-disposition-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-disposition-context.xml index ba01166921..0782fa8641 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-disposition-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-disposition-context.xml @@ -157,7 +157,7 @@ - + @@ -179,8 +179,8 @@ - - + + + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml index 17bbf38dee..e90e4e18a6 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml @@ -242,4 +242,15 @@ + + + + + + + + + + \ No newline at end of file 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 9611d55654..e42bf2ba4c 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 @@ -6,9 +6,9 @@ - @@ -660,6 +660,7 @@ + . + */ +package org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition; + +import java.util.List; + +import org.alfresco.module.org_alfresco_module_rm.capability.declarative.AbstractCapabilityCondition; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.security.AccessStatus; + +/** + * Base class for FillingOnChildrenCapabilityCondition and ReadOnChildrenCapabilityCondition + * + * @author Tuna Aksoy + * @since 2.3 + */ +public abstract class ChildPermissionCapabilityCondition extends AbstractCapabilityCondition +{ + protected boolean evaluateImpl(NodeRef nodeRef, String permission) + { + boolean result = true; + + List childAssocs = nodeService.getChildAssocs(nodeRef); + for (ChildAssociationRef childAssociationRef : childAssocs) + { + NodeRef childRef = childAssociationRef.getChildRef(); + if (permissionService.hasPermission(childRef, permission) == AccessStatus.DENIED) + { + result = false; + break; + } + } + + return result; + } +} diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/FillingOnChildrenCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/FillingOnChildrenCapabilityCondition.java new file mode 100644 index 0000000000..576cf627a4 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/FillingOnChildrenCapabilityCondition.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition; + +import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * Filling on children capability condition. + * + * @author Tuna Aksoy + * @since 2.3 + */ +public class FillingOnChildrenCapabilityCondition extends ChildPermissionCapabilityCondition +{ + /** + * @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#evaluate(org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + public boolean evaluateImpl(NodeRef nodeRef) + { + return evaluateImpl(nodeRef, RMPermissionModel.FILING); + } +} diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ReadOnChildrenCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ReadOnChildrenCapabilityCondition.java new file mode 100644 index 0000000000..ac6f24c914 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ReadOnChildrenCapabilityCondition.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition; + +import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * Read on children capability condition. + * + * @author Tuna Aksoy + * @since 2.3 + */ +public class ReadOnChildrenCapabilityCondition extends ChildPermissionCapabilityCondition +{ + /** + * @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#evaluate(org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + public boolean evaluateImpl(NodeRef nodeRef) + { + return evaluateImpl(nodeRef, RMPermissionModel.READ_RECORDS); + } +}