Update of /var/cvs/src/org/mmbase/security
In directory james.mmbase.org:/tmp/cvs-serv28704
Modified Files:
Action.java ActionChecker.java ActionRepository.java
Authorization.java MemoryActionRepository.java
Log Message:
tried to match actions stuff with actions stuff of didactor. Some changes in
result of that. Most importantly, actions must accept parameters
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/security
Index: Action.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/Action.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- Action.java 21 Jan 2008 15:25:28 -0000 1.5
+++ Action.java 21 Jan 2008 17:28:15 -0000 1.6
@@ -9,6 +9,7 @@
*/
package org.mmbase.security;
+import org.mmbase.util.functions.Parameters;
import org.mmbase.util.LocalizedString;
/**
@@ -17,7 +18,7 @@
* component XML's).
*
* @author Michiel Meeuwissen
- * @version $Id: Action.java,v 1.5 2008/01/21 15:25:28 michiel Exp $
+ * @version $Id: Action.java,v 1.6 2008/01/21 17:28:15 michiel Exp $
* @since MMBase-1.9
*/
public class Action implements java.io.Serializable {
@@ -64,4 +65,7 @@
public String toString() {
return nameSpace + ":" + name + ":" + defaultChecker;
}
+ public Parameters createParameters() {
+ return new Parameters();
+ }
}
Index: ActionChecker.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/ActionChecker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ActionChecker.java 6 Dec 2007 08:08:35 -0000 1.3
+++ ActionChecker.java 21 Jan 2008 17:28:15 -0000 1.4
@@ -9,18 +9,20 @@
*/
package org.mmbase.security;
+import org.mmbase.bridge.Node;
+import org.mmbase.util.functions.Parameters;
/**
* A piece of 'action check' functionality. Provided by actions themselves,
but security
* implementations can perhaps also use this interface to administer their
implementation of [EMAIL PROTECTED]
* Authorization#check(UserContext, Action)}.
*
* @author Michiel Meeuwissen
- * @version $Id: ActionChecker.java,v 1.3 2007/12/06 08:08:35 michiel Exp $
+ * @version $Id: ActionChecker.java,v 1.4 2008/01/21 17:28:15 michiel Exp $
* @since MMBase-1.9
*/
public interface ActionChecker extends java.io.Serializable {
- boolean check(UserContext user, Action ac);
+ boolean check(UserContext user, Action ac, Parameters parameters);
/**
* This basic implementation of ActionChecker checks the action only based
on rank. A minimal
@@ -32,7 +34,7 @@
public Rank(org.mmbase.security.Rank r) {
rank = r;
}
- public boolean check(UserContext user, Action ac) {
+ public boolean check(UserContext user, Action ac, Parameters
parameters) {
return user.getRank().getInt() >= rank.getInt();
}
public String toString() {
Index: ActionRepository.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/ActionRepository.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- ActionRepository.java 21 Jan 2008 15:25:28 -0000 1.6
+++ ActionRepository.java 21 Jan 2008 17:28:15 -0000 1.7
@@ -16,7 +16,7 @@
*
* @see [EMAIL PROTECTED] Action}.
* @author Michiel Meeuwissen
- * @version $Id: ActionRepository.java,v 1.6 2008/01/21 15:25:28 michiel Exp $
+ * @version $Id: ActionRepository.java,v 1.7 2008/01/21 17:28:15 michiel Exp $
* @since MMBase-1.9
*/
public abstract class ActionRepository extends Configurable {
@@ -33,7 +33,11 @@
public abstract void add(Action a);
- public abstract Action get(String nameSpace, String name);
+ public abstract Map<String, Action> get(String nameSpace);
- public abstract Collection<Action> getActions();
+ public Action get(String nameSpace, String name) {
+ return get(nameSpace).get(name);
+ }
+
+ public abstract Collection<Map<String, Action>> getActions();
}
Index: Authorization.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/Authorization.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- Authorization.java 25 Jul 2007 07:17:40 -0000 1.28
+++ Authorization.java 21 Jan 2008 17:28:15 -0000 1.29
@@ -12,6 +12,7 @@
import java.util.Set;
import java.util.HashSet;
+import org.mmbase.util.functions.Parameters;
import org.mmbase.bridge.Query;
import org.mmbase.storage.search.Constraint;
@@ -21,7 +22,7 @@
*
* @author Eduard Witteveen
* @author Michiel Meeuwissen
- * @version $Id: Authorization.java,v 1.28 2007/07/25 07:17:40 michiel Exp $
+ * @version $Id: Authorization.java,v 1.29 2008/01/21 17:28:15 michiel Exp $
*/
public abstract class Authorization extends Configurable {
@@ -137,14 +138,14 @@
* in the MMBase cloud.
* @since MMBase-1.9
*/
- public boolean check(UserContext user, Action ac) {
- return ac.getDefault().check(user, ac);
+ public boolean check(UserContext user, Action ac, Parameters parameters) {
+ return ac.getDefault().check(user, ac, parameters);
}
/**
* @since MMBase-1.9
*/
- public final void verify(UserContext user, Action ac) {
- if (!check(user, ac)) {
+ public final void verify(UserContext user, Action ac, Parameters
parameters) {
+ if (!check(user, ac, parameters)) {
throw new SecurityException("Action '" + ac + " was NOT permitted
to " + user.getIdentifier());
}
}
Index: MemoryActionRepository.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/MemoryActionRepository.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- MemoryActionRepository.java 21 Jan 2008 15:25:28 -0000 1.6
+++ MemoryActionRepository.java 21 Jan 2008 17:28:15 -0000 1.7
@@ -18,33 +18,13 @@
* this repository on startup.
*
* @author Michiel Meeuwissen
- * @version $Id: MemoryActionRepository.java,v 1.6 2008/01/21 15:25:28 michiel
Exp $
+ * @version $Id: MemoryActionRepository.java,v 1.7 2008/01/21 17:28:15 michiel
Exp $
* @since MMBase-1.9
*/
public class MemoryActionRepository extends ActionRepository {
private static final Logger log =
Logging.getLoggerInstance(MMBaseCop.class);
- private static class Key {
- private final String nameSpace;
- private final String name;
- Key(String ns, String n) {
- nameSpace = ns;
- name = n;
- }
- public int hashCode() {
- return name.hashCode();
- }
- public boolean equals(Object o) {
- if (o instanceof Key) {
- Key k = (Key) o;
- return k.name.equals(name) && (k.nameSpace == null ? nameSpace
== null : k.nameSpace.equals(nameSpace));
- } else {
- return false;
- }
- }
- }
-
- private final Map<Key, Action> store = new HashMap<Key, Action>();
+ private final Map<String, Map<String, Action>> store = new HashMap<String,
Map<String, Action>>();
public MemoryActionRepository() {
}
@@ -54,13 +34,27 @@
public void add(Action a) {
log.info("Adding " + a + " to " + this);
- store.put(new Key(a.getNameSpace(), a.getName()), a);
+ Map<String, Action> map = store.get(a.getNameSpace());
+ if (map == null) {
+ map = new HashMap<String, Action>();
+ store.put(a.getNameSpace(), map);
+ }
+ map.put(a.getName(), a);
+ }
+ public Map<String, Action> get(String nameSpace) {
+ Map<String, Action> map = store.get(nameSpace);
+ if (map == null) {
+ return Collections.emptyMap();
+ } else {
+ return Collections.unmodifiableMap(map);
+ }
}
public Action get(String nameSpace, String name) {
- return store.get(new Key(nameSpace, name));
+ return get(nameSpace).get(name);
}
- public Collection<Action> getActions() {
+
+ public Collection<Map<String, Action>> getActions() {
return store.values();
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs