From 27d2d3674f7f19c9266485c6c7c73107e1579f5c Mon Sep 17 00:00:00 2001 From: Mihai Cozma Date: Wed, 6 Jul 2016 10:29:07 +0300 Subject: [PATCH] Verify if node exists --- .../impl/ExtendedPermissionServiceImpl.java | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/repo/security/permissions/impl/ExtendedPermissionServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/repo/security/permissions/impl/ExtendedPermissionServiceImpl.java index 74e9e818ce..7c1e196544 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/repo/security/permissions/impl/ExtendedPermissionServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/repo/security/permissions/impl/ExtendedPermissionServiceImpl.java @@ -70,7 +70,7 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl /** File plan service */ private FilePlanService filePlanService; - + /** Permission processor registry */ private PermissionProcessorRegistry permissionProcessorRegistry; @@ -93,13 +93,13 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl { this.filePlanService = filePlanService; } - + /** * Sets the permission processor registry - * + * * @param permissionProcessorRegistry the permissions processor registry */ - public void setPermissionProcessorRegistry(PermissionProcessorRegistry permissionProcessorRegistry) + public void setPermissionProcessorRegistry(PermissionProcessorRegistry permissionProcessorRegistry) { this.permissionProcessorRegistry = permissionProcessorRegistry; } @@ -146,40 +146,42 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl public AccessStatus hasPermission(NodeRef nodeRef, String perm) { AccessStatus result = AccessStatus.UNDETERMINED; - - // permission pre-processors - List preProcessors = permissionProcessorRegistry.getPermissionPreProcessors(); - for (PermissionPreProcessor preProcessor : preProcessors) - { - // pre process permission - result = preProcessor.process(nodeRef, perm); - - // veto if denied - if (AccessStatus.DENIED.equals(result)) - { - return result; + if (nodeService.exists(nodeRef)) + { + + // permission pre-processors + List preProcessors = permissionProcessorRegistry.getPermissionPreProcessors(); + for (PermissionPreProcessor preProcessor : preProcessors) + { + // pre process permission + result = preProcessor.process(nodeRef, perm); + + // veto if denied + if (AccessStatus.DENIED.equals(result)) + { + return result; + } } - } - - // evaluate permission - result = hasPermissionImpl(nodeRef, perm); - - // permission post-processors - List postProcessors = permissionProcessorRegistry.getPermissionPostProcessors(); - for (PermissionPostProcessor postProcessor : postProcessors) - { - // post process permission - result = postProcessor.process(result, nodeRef, perm); - } - + + // evaluate permission + result = hasPermissionImpl(nodeRef, perm); + + // permission post-processors + List postProcessors = permissionProcessorRegistry.getPermissionPostProcessors(); + for (PermissionPostProcessor postProcessor : postProcessors) + { + // post process permission + result = postProcessor.process(result, nodeRef, perm); + } + } return result; } - + /** * Implementation of hasPermission method call. *

* Separation also convenient for unit testing. - * + * * @param nodeRef node reference * @param perm permission * @return {@link AccessStatus} access status result