[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