Author: angela
Date: Mon Feb  3 12:39:43 2020
New Revision: 1873536

URL: http://svn.apache.org/viewvc?rev=1873536&view=rev
Log:
OAK-8855 : Permission evaluation of nodes broken after :nestedCug removed from 
parent node (merge r1873524 into 1.10 branch)

Added:
    
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/RestoreParentNestedCugTest.java
      - copied unchanged from r1873524, 
jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/RestoreParentNestedCugTest.java
Modified:
    jackrabbit/oak/branches/1.10/   (props changed)
    
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/NestedCugHook.java
    
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/AbstractCugTest.java

Propchange: jackrabbit/oak/branches/1.10/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1873524

Modified: 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/NestedCugHook.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/NestedCugHook.java?rev=1873536&r1=1873535&r2=1873536&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/NestedCugHook.java
 (original)
+++ 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/NestedCugHook.java
 Mon Feb  3 12:39:43 2020
@@ -198,6 +198,17 @@ class NestedCugHook implements PostValid
         @Override
         public boolean childNodeChanged(String name, NodeState before, 
NodeState after) {
             if (!NodeStateUtils.isHidden(name)) {
+                // OAK-8855 - Restore :nestedCugs on parent if it is removed.
+                if (CugUtil.definesCug(name, after)) {
+                    Diff diff = parentDiff;
+                    while (diff != null) {
+                        if (diff.afterHoldsCug) {
+                            NodeBuilder cugNode = 
diff.afterBuilder.getChildNode(REP_CUG_POLICY);
+                            addNestedCugPath(cugNode, 
afterBuilder.getChildNode(REP_CUG_POLICY), path);
+                        }
+                        diff = diff.parentDiff;
+                    }
+                }
                 after.compareAgainstBaseState(before, new Diff(this, name, 
before, afterBuilder.getChildNode(name)));
             }
             return true;

Modified: 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/AbstractCugTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/AbstractCugTest.java?rev=1873536&r1=1873535&r2=1873536&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/AbstractCugTest.java
 (original)
+++ 
jackrabbit/oak/branches/1.10/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/AbstractCugTest.java
 Mon Feb  3 12:39:43 2020
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.spi.se
 import java.security.Principal;
 import java.util.Set;
 import java.util.UUID;
+import javax.jcr.AccessDeniedException;
 import javax.jcr.RepositoryException;
 import javax.jcr.SimpleCredentials;
 import javax.jcr.security.AccessControlList;
@@ -74,8 +75,8 @@ public class AbstractCugTest extends Abs
             CugConstants.PARAM_CUG_SUPPORTED_PATHS, SUPPORTED_PATHS,
             CugConstants.PARAM_CUG_ENABLED, true);
 
-    private static final String TEST_GROUP_ID = "testGroup" + 
UUID.randomUUID();
-    private static final String TEST_USER2_ID = "testUser2" + 
UUID.randomUUID();
+    static final String TEST_GROUP_ID = "testGroup" + UUID.randomUUID();
+    static final String TEST_USER2_ID = "testUser2" + UUID.randomUUID();
 
     @Override
     public void before() throws Exception {
@@ -152,6 +153,13 @@ public class AbstractCugTest extends Abs
         return new CugPermissionProvider(root, 
root.getContentSession().getWorkspaceName(), ImmutableSet.copyOf(principals), 
supportedPaths, getConfig(AuthorizationConfiguration.class).getContext(), 
getRootProvider(), getTreeProvider());
     }
 
+    void createTrees(@NotNull Tree tree, @NotNull String ntName, @NotNull 
String... names) throws AccessDeniedException {
+        Tree parent = tree;
+        for (String n : names) {
+            parent = TreeUtil.addChild(parent, n, ntName);
+        }
+    }
+
     void setupCugsAndAcls() throws Exception {
         UserManager uMgr = getUserManager(root);
         Principal testGroupPrincipal = getTestGroupPrincipal();


Reply via email to