[Yanel-commits] rev 32679 - in public/yanel/trunk/src: build webapp/src/java/org/wyona/yanel/servlet

michi at wyona.com michi at wyona.com
Fri Feb 29 13:06:29 CET 2008


Author: michi
Date: 2008-02-29 13:06:28 +0100 (Fri, 29 Feb 2008)
New Revision: 32679

Modified:
   public/yanel/trunk/src/build/dependencies.xml
   public/yanel/trunk/src/build/pom-core.xml
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
security package upgraded

Modified: public/yanel/trunk/src/build/dependencies.xml
===================================================================
--- public/yanel/trunk/src/build/dependencies.xml	2008-02-29 11:11:32 UTC (rev 32678)
+++ public/yanel/trunk/src/build/dependencies.xml	2008-02-29 12:06:28 UTC (rev 32679)
@@ -39,7 +39,7 @@
       <dependency groupId="wyona-org-commons" artifactId="wyona-org-commons" version="1.0-dev-r30752"/>
 
       <!-- IMPORTANT: Please make sure to update pom-core.xml as well! -->
-      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-core" version="0.2-dev-r31373"/>
+      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-core" version="0.2-dev-r32676"/>
 
       <!-- TODO: Add to yanel.xml, because these libs are only needed during runtime -->
       <dependency groupId="avalon-framework" artifactId="avalon-framework-api" version="4.3"/>
@@ -62,8 +62,8 @@
 <!-- The XSLT engine of Java on MacOS X seems to have trouble. With Xalan enabled it should work! Also Abdera seems to need Xalan ... -->
       <dependency groupId="xalan" artifactId="${xalan.artifactId}" version="${xalan.version}"/>
 
-      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-impl" version="0.2-dev-r31373"/>
-      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-util" version="0.2-dev-r31373"/>
+      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-impl" version="0.2-dev-r32676"/>
+      <dependency groupId="wyona-org-security" artifactId="wyona-org-security-util" version="0.2-dev-r32676"/>
       <!-- IMPORTANT: Please make sure to update pom-core.xml as well! -->
       <dependency groupId="yarep" artifactId="yarep-impl" version="1.0-dev-r32338"/>
       <dependency groupId="spring" artifactId="spring"

Modified: public/yanel/trunk/src/build/pom-core.xml
===================================================================
--- public/yanel/trunk/src/build/pom-core.xml	2008-02-29 11:11:32 UTC (rev 32678)
+++ public/yanel/trunk/src/build/pom-core.xml	2008-02-29 12:06:28 UTC (rev 32679)
@@ -10,7 +10,7 @@
       <groupId>wyona-org-security</groupId>
       <artifactId>wyona-org-security-core</artifactId>
       <!-- IMPORTANT: Please make sure to update dependencies.xml as well! -->
-      <version>0.2-dev-r31373</version>
+      <version>0.2-dev-r32676</version>
     </dependency>
     <dependency>
       <groupId>yarep</groupId>

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-02-29 11:11:32 UTC (rev 32678)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-02-29 12:06:28 UTC (rev 32679)
@@ -191,6 +191,13 @@
             if (log.isDebugEnabled()) log.debug("Access granted: " + request.getServletPath());
         }
 
+        // Check for requests re policies
+        String policyRequestPara = request.getParameter("yanel.policy");
+        if (policyRequestPara != null) {
+            doAccessPolicyRequest(request, response, policyRequestPara);
+            return;
+        }
+
         // Check for requests for global data
         Resource resource = getResource(request, response);
         String path = resource.getPath();
@@ -242,15 +249,8 @@
             log.error("DEBUG: WebDAV client (" + request.getHeader("User-Agent") + ") requests to \"edit\" a resource: " + resource.getRealm() + ", " + resource.getPath());
             //return;
         }
-
-        String policyRequestPara = request.getParameter("yanel.policy");
-        if (policyRequestPara != null) {
-            doAccessPolicyRequest(request, response, policyRequestPara);
-            return;
-        }
         
         String value = request.getParameter("yanel.resource.usecase");
-
         try {
             if (value != null && value.equals("release-lock")) {
                 log.debug("Release lock ...");
@@ -2310,6 +2310,13 @@
 
             // TODO: Implement rights (part of policy manager)
             sb.append("<rights>");
+            String[] rights = pm.getUsecases();
+            if (rights != null) {
+                for (int i = 0; i < rights.length; i++) {
+                    sb.append("<right id=\"" + rights[i] + "\">" + rights[i] + "</group>");
+                }
+            }
+            // TODO: obsolete
             sb.append("<right id=\"view\">Read</right>");
             sb.append("<right id=\"write\">Write</right>");
             sb.append("<right id=\"toolbar\">Toolbar</right>");
@@ -2328,13 +2335,15 @@
     private String getPolicyAsXML(PolicyManager pm, String path) {
 
         StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
-        sb.append("<policy xmlns=\"http://www.wyona.org/security/1.0\">");
 
         try {
             Policy policy = pm.getPolicy(path, true);
+        sb.append("<policy xmlns=\"http://www.wyona.org/security/1.0\" use-inherited-policies=\"" + policy.useInheritedPolicies() + "\">");
             sb.append(getPolicyIdentities(policy));
+            sb.append(getPolicyGroups(policy));
         } catch(Exception e) {
             log.error(e, e);
+            sb.append("<policy xmlns=\"http://www.wyona.org/security/1.0\">");
             sb.append("<exception>" + e.getMessage() + "</exception>");
         }
 
@@ -2343,7 +2352,7 @@
     }
 
     /**
-     * Get users
+     * Get users (TODO: Move this code into the security package)
      */
     static public StringBuffer getPolicyIdentities(Policy p) {
         Vector world = new Vector();
@@ -2384,17 +2393,46 @@
             }
             sb.append("</user>");
         }
+        return sb;
+    }
 
-/*
-        for (int i = 0; i < groups.length; i++) {
-            sb.append("<li>Group: ... (...)</li>");
+    /**
+     * Get groups (TODO: Move this code into the security package)
+     */
+    static public StringBuffer getPolicyGroups(Policy p) {
+        Vector world = new Vector();
+        java.util.HashMap groups = new java.util.HashMap();
+        org.wyona.security.core.UsecasePolicy[] up = p.getUsecasePolicies();
+        if (up != null && up.length > 0) {
+            for (int i = 0; i < up.length; i++) {
+                org.wyona.security.core.GroupPolicy[] ids = up[i].getGroupPolicies();
+                for (int j = 0; j < ids.length; j++) {
+                    Vector groupRights;
+                    if ((groupRights = (Vector) groups.get(ids[j].getId())) != null) {
+                        log.debug("Group has already been added: " + ids[j].getId());
+                    } else {
+                        groupRights = new Vector();
+                        groups.put(ids[j].getId(), groupRights);
+                    }
+                    groupRights.add(up[i].getName());
+                }
+            }
+        } else {
+            log.warn("No policy usecases!");
         }
-*/
-/*
-        for (int i = 0; i < hosts.length; i++) {
-            sb.append("<li>Host: 192.168.1.34 (view, open, write)</li>");
+
+        StringBuffer sb = new StringBuffer();
+
+        java.util.Iterator userIterator = groups.keySet().iterator();
+        while (userIterator.hasNext()) {
+            String userName = (String) userIterator.next();
+            sb.append("<group id=\""+userName+"\">");
+            Vector rights = (Vector) groups.get(userName);
+            for (int k = 0; k < rights.size(); k++) {
+            sb.append("<right id=\"" + (String) rights.elementAt(k) + "\"/>");
+            }
+            sb.append("</group>");
         }
-*/
         return sb;
     }
 }



More information about the Yanel-commits mailing list