Author: michiel
Date: 2009-06-04 16:04:04 +0200 (Thu, 04 Jun 2009)
New Revision: 35731

Added:
   
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/UserStatus.java
Modified:
   
mmbase/trunk/applications/cloudcontext/src/main/config/builders/cloudcontext/mmbaseusers.fields.xml
   
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/BasicUserProvider.java
   
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status.properties
   
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status_nl.properties
Log:
Introduced UserStatus enum, and disallow users whos status is invalid (e.g. you 
can easily override that 'NEW' users are not allowed to login

Modified: 
mmbase/trunk/applications/cloudcontext/src/main/config/builders/cloudcontext/mmbaseusers.fields.xml
===================================================================
--- 
mmbase/trunk/applications/cloudcontext/src/main/config/builders/cloudcontext/mmbaseusers.fields.xml
 2009-06-04 13:38:04 UTC (rev 35730)
+++ 
mmbase/trunk/applications/cloudcontext/src/main/config/builders/cloudcontext/mmbaseusers.fields.xml
 2009-06-04 14:04:04 UTC (rev 35731)
@@ -91,7 +91,9 @@
     <datatype base="integer" xmlns="http://www.mmbase.org/xmlns/datatypes";>
       <default value="0" />
       <enumeration>
-        <entry basename="org.mmbase.security.status" />
+        <entry
+            
javaconstants="org.mmbase.security.implementation.cloudcontext.UserStatus"
+            basename="org.mmbase.security.status" />
       </enumeration>
     </datatype>
   </field>

Modified: 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/BasicUserProvider.java
===================================================================
--- 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/BasicUserProvider.java
 2009-06-04 13:38:04 UTC (rev 35730)
+++ 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/BasicUserProvider.java
 2009-06-04 14:04:04 UTC (rev 35731)
@@ -75,10 +75,11 @@
         return dbPasswordsEncoded;
     }
 
+
     public MMObjectNode getUser(final String userName, final String password, 
final boolean encoded) {
 
         if (log.isDebugEnabled()) {
-            log.debug("username: '" + userName + "' password: '" + password + 
"'");
+            log.debug("username: '" + userName + "' password: '" + password + 
"' " + this);
         }
         final MMObjectNode user = getUser(userName);
 
@@ -127,10 +128,15 @@
             }
             if (userRank.getInt() < Rank.ADMIN.getInt() && 
getField(getStatusField()) != null) {
                 int status = user.getIntValue(getStatusField());
-                if (status == -1) {
+                if (status == UserStatus.BLOCKED.getValue()) {
                     throw new SecurityException("account for '" + userName + 
"' is blocked");
                 }
             }
+
+            if (! isStatusValid(user)) {
+                throw new SecurityException("Account is not valid. Status " + 
UserStatus.valueOf(user.getIntValue(getStatusField())));
+            }
+            log.debug("Status of " + user + " is valid");
             if (userRank.getInt() < Rank.ADMIN_INT && getValidFromField() != 
null) {
                 long validFrom = user.getLongValue(getValidFromField());
                 if (validFrom != -1 && validFrom * 1000 > 
System.currentTimeMillis() ) {
@@ -298,7 +304,7 @@
 
 
     protected boolean isStatusValid(MMObjectNode node) {
-        return node.getIntValue(getStatusField()) >= 0;
+        return node.getIntValue(getStatusField()) >= UserStatus.NEW.getValue();
     }
 
     /**

Added: 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/UserStatus.java
===================================================================
--- 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/UserStatus.java
                                (rev 0)
+++ 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/implementation/cloudcontext/UserStatus.java
        2009-06-04 14:04:04 UTC (rev 35731)
@@ -0,0 +1,39 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.security.implementation.cloudcontext;
+
+
+/**
+ * @author Michiel Meeuwissen
+ * @version $Id: User.java 35335 2009-05-21 08:14:41Z michiel $
+ * @see    org.mmbase.security.implementation.cloudcontext.builders.Users
+ */
+public enum UserStatus {
+
+    BLOCKED(-1),
+    NEW(0),
+    INUSE(1);
+
+    private final int i;
+    private UserStatus(int i) {
+        this.i = i;
+    }
+    public int getValue() {
+        return i;
+    }
+
+    public static UserStatus valueOf(int i) {
+        for (UserStatus us : UserStatus.values()) {
+            if (us.getValue() == i) return us;
+        }
+        throw new IllegalArgumentException();
+    }
+
+}

Modified: 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status.properties
===================================================================
--- 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status.properties
  2009-06-04 13:38:04 UTC (rev 35730)
+++ 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status.properties
  2009-06-04 14:04:04 UTC (rev 35731)
@@ -1,3 +1,3 @@
--1=blocked
-0=new
-1=in use
+BLOCKED=blocked
+NEW=new
+INUSE=in use

Modified: 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status_nl.properties
===================================================================
--- 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status_nl.properties
       2009-06-04 13:38:04 UTC (rev 35730)
+++ 
mmbase/trunk/applications/cloudcontext/src/main/java/org/mmbase/security/status_nl.properties
       2009-06-04 14:04:04 UTC (rev 35731)
@@ -1,3 +1,3 @@
--1=geblokkeerd
-0=nieuw
-1=in gebruik
+BLOCKED=geblokkeerd
+NEW=nieuw
+INUSE=in gebruik

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to