Author: tdraier
Date: Thu Dec 27 11:35:50 2007
New Revision: 19418
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19418&repname=
=3Djahia
Log:
fixed temporary implementation for jackrabbit permissions
Modified:
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java
Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/jackrab=
bit/JackrabbitFileNodeWrapper.java&rev=3D19418&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
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java Thu Dec 27 11:3=
5:50 2007
@@ -1,7 +1,5 @@
package org.jahia.services.content.impl.jackrabbit;
=
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
import org.apache.log4j.Logger;
import org.jahia.bin.Jahia;
import org.jahia.exceptions.JahiaException;
@@ -11,10 +9,7 @@
import org.jahia.services.content.JCRStoreProvider;
import org.jahia.services.usermanager.JahiaUser;
=
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
+import javax.jcr.*;
import java.security.Principal;
import java.util.*;
=
@@ -38,7 +33,8 @@
try {
String myPath =3D objectNode.getPath();
=
- Map permissions =3D ((org.apache.jackrabbit.core.security.Jahi=
aAccessManager) ((SessionImpl)session).getAccessManager()).getPermissions((=
(NodeImpl)objectNode).getId());
+ Map permissions =3D new HashMap();
+ recurseonACPs(permissions, getObjectNode());
=
for (Iterator iterator =3D permissions.keySet().iterator(); it=
erator.hasNext();) {
int p =3D 0;
@@ -167,4 +163,35 @@
return acl;
}
=
+ private void recurseonACPs(Map results, Node n) throws RepositoryExcep=
tion {
+ try {
+ while (true) {
+ if (n.isNodeType("mix:accessControlled")) {
+ Node acp =3D n.getProperty("jcr:accessControlPolicy").=
getNode();
+ NodeIterator aces =3D acp.getNode("jcr:acl").getNodes(=
"jcr:ace");
+ while (aces.hasNext()) {
+ Node ace =3D aces.nextNode();
+ String principal =3D ace.getProperty("jcr:principa=
l").getString();
+ String type =3D ace.getProperty("jcr:aceType").get=
String();
+ Value[] privileges =3D ace.getProperty("jcr:privil=
eges").getValues();
+
+ List p =3D (List) results.get(principal);
+
+ if (p =3D=3D null) {
+ p =3D new ArrayList();
+ results.put(principal, p);
+ for (int i =3D 0; i < privileges.length; i++) {
+ Value privilege =3D privileges[i];
+ p.add(new String[]{n.getPath(), type, priv=
ilege.getString()});
+ }
+ }
+ }
+ }
+ n =3D n.getParent();
+ }
+ } catch (ItemNotFoundException e) {
+ return;
+ }
+ }
+
}
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list