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