[prev in list] [next in list] [prev in thread] [next in thread]
List: slide-dev
Subject: cvs commit: jakarta-slide/src/share/org/apache/slide/security ACLSecurityImpl.java
From: ozeigermann () apache ! org
Date: 2003-11-27 9:36:00
[Download RAW message or body]
ozeigermann 2003/11/27 01:36:00
Modified: src/share/org/apache/slide/security ACLSecurityImpl.java
Log:
Overloaded hasRole from SecurityImpl to match the new ACL-12 implementation using \
properties for members of groups(=roles). getRoles still is a TODO
Revision Changes Path
1.4 +41 -5 \
jakarta-slide/src/share/org/apache/slide/security/ACLSecurityImpl.java
Index: ACLSecurityImpl.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/ACLSecurityImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ACLSecurityImpl.java 21 Nov 2003 11:39:07 -0000 1.3
+++ ACLSecurityImpl.java 27 Nov 2003 09:36:00 -0000 1.4
@@ -68,6 +68,7 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
import org.apache.slide.common.Namespace;
import org.apache.slide.common.NamespaceConfig;
import org.apache.slide.common.ServiceAccessException;
@@ -78,7 +79,6 @@
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionNumber;
import org.apache.slide.content.RevisionDescriptorNotFoundException;
-import org.apache.slide.security.SecurityImpl;
import org.apache.slide.store.Store;
import org.apache.slide.structure.ActionNode;
import org.apache.slide.structure.ObjectNode;
@@ -239,6 +239,42 @@
return evaluateAcl(token, objectNode, actionNode, permissions);
}
+
+ public boolean hasRole(SlideToken token, String role) throws \
ServiceAccessException, ObjectNotFoundException { +
+ ObjectNode subject = getPrincipal(token);
+
+ if (role.equals(NamespaceConfig.NOBODY)) {
+ return true;
+ } else {
+ try {
+ Uri roleUri = namespace.getUri(token, \
namespaceConfig.getRolesPath() + "/" + role); +
+ NodeRevisionDescriptor nrd =
+ roleUri.getStore().retrieveRevisionDescriptor(roleUri, new \
NodeRevisionNumber()); + NodeProperty membersetProp = \
nrd.getProperty("group-member-set"); + if (membersetProp != null && \
membersetProp.getValue() != null) { + XMLValue xmlVal = new \
XMLValue((String) membersetProp.getValue()); + return \
xmlVal.getHrefNodes().contains(subject); + } else {
+ return false;
+ }
+ } catch (RevisionDescriptorNotFoundException e) {
+ return false;
+ } catch (ServiceAccessException e) {
+ throw e;
+ } catch (JDOMException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }
+
+ public boolean hasRole(ObjectNode object, String role) throws \
ServiceAccessException, ObjectNotFoundException { +
+ throw new UnsupportedOperationException("Please use alternate signature: \
hasRole(SlideToken token, String role)"); + }
+
/**
* Evaluates speified ACL by first-match principle
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic