Author: tdraier
Date: Thu Aug  2 16:46:57 2007
New Revision: 18117

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18117&repname=
=3Djahia
Log:
fixed acl inheritance break in linked copies ( due to acl aggregation )
(port 18081)

Modified:
    trunk/core/src/java/org/jahia/hibernate/model/JahiaAcl.java
    trunk/core/src/java/org/jahia/services/acl/JahiaLinkedContentACL.java

Modified: trunk/core/src/java/org/jahia/hibernate/model/JahiaAcl.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/model/JahiaAcl.java&rev=3D18117&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/hibernate/model/JahiaAcl.java (original)
+++ trunk/core/src/java/org/jahia/hibernate/model/JahiaAcl.java Thu Aug  2 =
16:46:57 2007
@@ -385,13 +385,13 @@
         }
         checkCache();
 //        else return true;
-        String key =3D "" + user.getUserKey() + "_" + permission + getClas=
s().getName() + id + objectSiteID+siteAdminsHaveAllRights;
+        String key =3D "" + user.getUserKey() + "_" + permission + getKey(=
) + objectSiteID+siteAdminsHaveAllRights;
         Boolean v =3D (Boolean) permissions.get(key);
         if (v !=3D null) {
             //make sure the user-specific ACLs are declared in the current=
 fragment/template,
             //even if the permission response is already cached
             if (Jahia.getSettings().isEsiCacheActivated()) {
-                Map[] recursedMaps =3D (Map[]) permissions.get("recursedTa=
bles"+getClass().getName() + id);
+                Map[] recursedMaps =3D (Map[]) permissions.get("recursedTa=
bles"+getKey());
                 if (recursedMaps!=3Dnull && recursedMaps[0].size()>0) {
                     ServicesRegistry.getInstance().getEsiService().addAclU=
serNamesToCurrentJesiObject(recursedMaps[0]);
                 }
@@ -839,13 +839,11 @@
     /**
      * Find permissions recursively.
      *
-     * @param userTable
-     * @param groupTable
      */
     public Map[] getRecursedPermissions(ParentACLFinder parentACLFinder, A=
CLResourceInterface aclResource) {
         checkCache();
 =

-        Map[] recursedMaps =3D (Map[]) permissions.get("recursedTables"+ge=
tClass().getName() + id);
+        Map[] recursedMaps =3D (Map[]) permissions.get("recursedTables"+ g=
etKey());
         if (recursedMaps =3D=3D null) {
             recursedMaps =3D new Map[] { new HashMap(userEntries), new Has=
hMap(groupEntries) };
 =

@@ -868,7 +866,7 @@
                 buildPermissions(recursedMaps[1], parents[1]);
             }
 =

-            permissions.put("recursedTables"+getClass().getName() + id, re=
cursedMaps);
+            permissions.put("recursedTables"+ getKey() , recursedMaps);
         }
 =

         if (Jahia.getSettings().isEsiCacheActivated() && recursedMaps[0].s=
ize()>0) {
@@ -878,6 +876,10 @@
         return recursedMaps;
     }
 =

+    protected String getKey() {
+        return id.toString();
+    }
+
     public Map getRecursedUserEntries() {
         return getRecursedPermissions (null, null) [0];
     }

Modified: trunk/core/src/java/org/jahia/services/acl/JahiaLinkedContentACL.=
java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/acl/JahiaLinkedContentACL.java&rev=3D18117&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/services/acl/JahiaLinkedContentACL.java (=
original)
+++ trunk/core/src/java/org/jahia/services/acl/JahiaLinkedContentACL.java T=
hu Aug  2 16:46:57 2007
@@ -61,52 +61,9 @@
 =

 =

     public JahiaAcl getACL() {
-//        return new JahiaLinkedContentAcl(mACL, pickedAcl.getACL(), false=
, true);
         return new JahiaLinkedContentAcl(mACL, pickedAcl.getACL());
     }
 =

-//    class JahiaLinkedContentAcl extends JahiaAcl {
-//        private JahiaAcl acl;
-//        private JahiaAcl nextAcl;
-//        private boolean upLevel;
-//        private boolean pickerSide;
-//
-//        public JahiaLinkedContentAcl(JahiaAcl acl, JahiaAcl nextAcl, boo=
lean upLevel, boolean pickerSide) {
-//            setParent(acl.getParent());
-//            setInheritance(acl.getInheritance());
-//            setId(acl.getId());
-//            setUserEntries(acl.getUserEntries());
-//            setGroupEntries(acl.getGroupEntries());
-//            this.acl =3D acl;
-//            this.nextAcl =3D nextAcl;
-//            this.upLevel =3D upLevel;
-//            this.pickerSide =3D pickerSide;
-//        }
-//
-//        public JahiaAcl getParent() {
-//            // check picker/picked acl until root-picked object
-//            upLevel |=3D acl.getId().equals(rootPickedAcl.getACL().getId=
());
-//
-//            if (upLevel) {
-//                // check root-picked hierarchy
-//                if (acl.getParent() !=3D null) {
-//                    return new JahiaLinkedContentAcl(acl.getParent(), ne=
xtAcl, true, false);
-//                } else {
-//                    // back to parent hierarchy
-//                    return nextAcl;
-//                }
-//            } else {
-//                // Redefinition on picked-side -> follow picked hierarch=
y, forget picker
-//                if (!pickerSide && !acl.getUserEntries().isEmpty() || !a=
cl.getGroupEntries().isEmpty()) {
-//                    return acl.getParent();
-//                }
-//
-//                return new JahiaLinkedContentAcl(nextAcl, acl.getParent(=
), upLevel, !pickerSide);
-//            }
-//        }
-//
-//    }
-
     class JahiaLinkedContentAcl extends JahiaAcl {
         private JahiaAcl pickerAcl;
         private JahiaAcl pickedAcl;
@@ -121,14 +78,14 @@
 =

             if (pickedAcl.getId().equals(rootPickedAcl.getACL().getId())) {
                 // root picker -> get all recursed acl from the picker obj=
ect (from root picked to home page)
-                if (pickedAcl.getInheritance().intValue() =3D=3D 0) {
-                    setUserEntries(merge(rootPickedAcl.getACL().getRecurse=
dUserEntries(), pickerAcl.getUserEntries()));
-                    setGroupEntries(merge(rootPickedAcl.getACL().getRecurs=
edGroupEntries(), pickerAcl.getGroupEntries()));
+                if (pickedAcl.getInheritance().intValue() !=3D 1) {
+                    setUserEntries(merge(pickedAcl.getRecursedUserEntries(=
), pickerAcl.getUserEntries()));
+                    setGroupEntries(merge(pickedAcl.getRecursedGroupEntrie=
s(), pickerAcl.getGroupEntries()));
                 } else {
                     setInheritance(new Integer(1));
 =

-                    setUserEntries(mergeWithBrokenInheritance(rootPickedAc=
l.getACL().getRecursedUserEntries(), pickerAcl.getRecursedUserEntries()));
-                    setGroupEntries(mergeWithBrokenInheritance(rootPickedA=
cl.getACL().getRecursedGroupEntries(), pickerAcl.getRecursedGroupEntries())=
);
+                    setUserEntries(mergeWithBrokenInheritance(pickedAcl.ge=
tRecursedUserEntries(), pickerAcl.getRecursedUserEntries()));
+                    setGroupEntries(mergeWithBrokenInheritance(pickedAcl.g=
etRecursedGroupEntries(), pickerAcl.getRecursedGroupEntries()));
                 }
             } else {
                 // sub picker
@@ -136,16 +93,16 @@
                 Map pickedUserEntries =3D pickedAcl.getUserEntries();
                 Map pickedGroupEntries =3D pickedAcl.getGroupEntries();
 =

-                if (!pickedUserEntries.isEmpty() || !pickedGroupEntries.is=
Empty() || pickedAcl.getInheritance().intValue() =3D=3D 1) {
+                if (pickedUserEntries.isEmpty() && pickedGroupEntries.isEm=
pty() && pickedAcl.getInheritance().intValue() =3D=3D 0) {
+                    // juste merge with local picker acl (can t be modifie=
d with gui currently)
+                    setUserEntries(merge(pickedUserEntries, pickerAcl.getU=
serEntries()));
+                    setGroupEntries(merge(pickedGroupEntries, pickerAcl.ge=
tGroupEntries()));
+                } else {
                     // if acl has been redefined in picked, break inherita=
nce and recopy recursed admin/write from picker
                     setInheritance(new Integer(1));
 =

                     setUserEntries(mergeWithBrokenInheritance(pickedAcl.ge=
tRecursedUserEntries(), pickerAcl.getRecursedUserEntries()));
                     setGroupEntries(mergeWithBrokenInheritance(pickedAcl.g=
etRecursedGroupEntries(), pickerAcl.getRecursedGroupEntries()));
-                } else {
-                    // juste merge with local picker acl (can t be modifie=
d with gui currently)
-                    setUserEntries(merge(pickedUserEntries, pickerAcl.getU=
serEntries()));
-                    setGroupEntries(merge(pickedGroupEntries, pickerAcl.ge=
tGroupEntries()));
                 }
             }
 =

@@ -204,6 +161,10 @@
             }
         }
 =

+        protected String getKey() {
+            return getId().toString() + "/" + pickedAcl.getId().toString();
+        }
+
     }
 =

 =


_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to