Author: angela
Date: Tue Apr  9 18:01:50 2013
New Revision: 1466161

URL: http://svn.apache.org/r1466161
Log:
OAK-527: permissions (wip)

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java?rev=1466161&r1=1466160&r2=1466161&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlManagerImpl.java
 Tue Apr  9 18:01:50 2013
@@ -118,7 +118,7 @@ public class AccessControlManagerImpl im
     @Nonnull
     @Override
     public Privilege[] getSupportedPrivileges(@Nullable String absPath) throws 
RepositoryException {
-        checkValidPath(absPath);
+        getTree(getOakPath(absPath), Permissions.NO_PERMISSION);
         return privilegeManager.getRegisteredPrivileges();
     }
 
@@ -351,26 +351,18 @@ public class AccessControlManagerImpl im
             throw new PathNotFoundException("No tree at " + oakPath);
         }
         if (permissions != Permissions.NO_PERMISSION) {
-            checkPermission(tree, permissions);
+            if (permissionProvider != null && 
!permissionProvider.isGranted(tree, null, permissions)) {
+                throw new AccessDeniedException("Access denied at " + tree);
+            }
+            // check if the tree is access controlled
+            if (acConfig.getContext().definesTree(tree)) {
+                throw new AccessControlException("Tree " + tree.getPath() + " 
defines access control content.");
+            }
         }
 
-        // check if the tree is access controlled
-        if (acConfig.getContext().definesTree(tree)) {
-            throw new AccessControlException("Tree " + tree.getPath() + " 
defines access control content.");
-        }
         return tree;
     }
 
-    private void checkPermission(@Nonnull Tree tree, long permissions) throws 
AccessDeniedException {
-        if (permissionProvider != null && !permissionProvider.isGranted(tree, 
null, permissions)) {
-            throw new AccessDeniedException("Access denied at " + tree);
-        }
-    }
-
-    private void checkValidPath(@Nullable String jcrPath) throws 
RepositoryException {
-        getTree(getOakPath(jcrPath), Permissions.NO_PERMISSION);
-    }
-
     private static void checkValidPolicy(@Nullable String oakPath, @Nonnull 
AccessControlPolicy policy) throws AccessControlException {
         if (policy instanceof ACL) {
             String path = ((ACL) policy).getOakPath();

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java?rev=1466161&r1=1466160&r2=1466161&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 Tue Apr  9 18:01:50 2013
@@ -107,9 +107,9 @@ public class PermissionProviderImpl impl
         // TODO: OAK-753 decide on where to filter out hidden items.
         if (isHidden(tree, property)) {
             return ReadStatus.DENY_ALL;
-        } else if (isAccessControlContent(tree) && 
canReadAccessControlContent(tree, property)) {
+        } else if (isAccessControlContent(tree)) {
             // TODO: review if read-ac permission is never fine-granular
-            return ReadStatus.ALLOW_ALL;
+            return canReadAccessControlContent(tree, null) ? 
ReadStatus.ALLOW_ALL : ReadStatus.DENY_ALL;
         } else if (isVersionContent(tree)) {
             return getVersionContentReadStatus(tree, property);
         } else {
@@ -124,7 +124,9 @@ public class PermissionProviderImpl impl
 
     @Override
     public boolean isGranted(@Nonnull Tree tree, @Nullable PropertyState 
property, long permissions) {
-        if (isVersionContent(tree)) {
+        if (isHidden(tree, property)) {
+            return false;
+        } else if (isVersionContent(tree)) {
             TreeLocation location = getVersionableLocation(tree, property);
             if (location == null) {
                 // TODO: review permission evaluation on hierarchy nodes 
within the different version stores.


Reply via email to