Update of 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext
In directory james.mmbase.org:/tmp/cvs-serv29267

Modified Files:
      Tag: MMBase-1_8
        Authenticate.java User.java 
Log Message:
  MMB-1749


See also: 
http://cvs.mmbase.org/viewcvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext
See also: http://www.mmbase.org/jira/browse/MMB-1749


Index: Authenticate.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/Authenticate.java,v
retrieving revision 1.17
retrieving revision 1.17.2.1
diff -u -b -r1.17 -r1.17.2.1
--- Authenticate.java   20 Feb 2006 18:34:16 -0000      1.17
+++ Authenticate.java   8 Dec 2008 16:31:46 -0000       1.17.2.1
@@ -31,7 +31,7 @@
  * @author Eduard Witteveen
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Authenticate.java,v 1.17 2006/02/20 18:34:16 michiel Exp $
+ * @version $Id: Authenticate.java,v 1.17.2.1 2008/12/08 16:31:46 michiel Exp $
  */
 public class Authenticate extends Authentication {
     private static final Logger log = 
Logging.getLoggerInstance(Authenticate.class);
@@ -60,10 +60,18 @@
         }
     }
 
+    public final static Authenticate getInstance() {
+        return (Authenticate) 
MMBase.getMMBase().getMMBaseCop().getAuthentication();
+    }
+
+    public  Provider getUserProvider() {
+        return Users.getBuilder();
+    }
+
 
     // javadoc inherited
     protected void load() throws SecurityException {
-        Users users = Users.getBuilder();
+        Provider users = getUserProvider();
         if (users == null) {
             String msg = "builders for security not installed, if you are 
trying to install the application belonging to this security, please restart 
the application after all data has been imported)";
             log.fatal(msg);
@@ -88,21 +96,30 @@
 
     }
 
+    private boolean warnedNoAnonymousUser = false;
+
     // javadoc inherited
     public UserContext login(String s, Map map, Object aobj[]) throws 
SecurityException  {
         if (log.isDebugEnabled()) {
             log.trace("login-module: '" + s + "'");
         }
         MMObjectNode node = null;
-        Users users = Users.getBuilder();
+        Provider users = getUserProvider();
         if (users == null) {
             String msg = "builders for security not installed, if you are 
trying to install the application belonging to this security, please restart 
the application after all data has been imported)";
             log.fatal(msg);
             throw new SecurityException(msg);
         }
-        allowEncodedPassword = 
org.mmbase.util.Casting.toBoolean(users.getInitParameter("allowencodedpassword"));
+        allowEncodedPassword = users.allowEncodedPassword();
         if ("anonymous".equals(s)) {
             node = users.getAnonymousUser();
+            if (node == null) {
+                if (! warnedNoAnonymousUser) {
+                    log.warn("No user node for anonymous found");
+                    warnedNoAnonymousUser = true;
+                }
+                return new LocalAdmin("anonymous", s, 
Rank.getRank("anonymous"));
+            }
         } else if ("name/password".equals(s)) {
             String userName = (String)map.get("username");
             String password = (String)map.get("password");
@@ -117,7 +134,7 @@
                     return user;
                 }
             }
-            node = users.getUser(userName, password);
+            node = users.getUser(userName, password, true);
             if (node != null && ! users.isValid(node)) {
                 throw new SecurityException("Logged in an invalid user");
             }
@@ -153,12 +170,18 @@
                 return user;
             } else {
                 if (userName != null) {
+                    try {
                     node = users.getUser(userName);
-                    if (rank != null) {
+                    } catch (SecurityException se) {
+                        log.service(se);
+                        return new LocalAdmin(userName, s, rank == null ? 
Rank.ADMIN : Rank.getRank(rank));
                     }
                 } else if (rank != null) {
                     node = users.getUserByRank(rank, userName);
                     log.debug("Class authentication to rank " + rank + " found 
node " + node);
+                    if (node == null) {
+                        return new LocalAdmin(rank, s, Rank.getRank(rank));
+                    }
                 }
             }
         } else {
@@ -240,14 +263,19 @@
 
         private String userName;
         private long   l;
+        private Rank   r = Rank.ADMIN;
         LocalAdmin(String user, String app) {
             super(new AdminVirtualNode(), Authenticate.this.getKey(), app);
             l = extraAdminsUniqueNumber;
             userName = user;
         }
+        LocalAdmin(String user, String app, Rank r) {
+            this(user, app);
+            this.r = r;
+        }
         public String getIdentifier() { return userName; }
         public String  getOwnerField() { return userName; }
-        public Rank getRank() throws SecurityException { return Rank.ADMIN; }
+        public Rank getRank() throws SecurityException { return r; }
         public boolean isValidNode() { return l == extraAdminsUniqueNumber; }
         private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, ClassNotFoundException {
             userName = in.readUTF();
@@ -279,7 +307,7 @@
     }
     public  class AdminVirtualNode extends VirtualNode {
         AdminVirtualNode() {
-            super(Users.getBuilder());
+            super(Authenticate.this.getUserProvider().getUserBuilder());
         }
     }
 


Index: User.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/User.java,v
retrieving revision 1.22.2.3
retrieving revision 1.22.2.4
diff -u -b -r1.22.2.3 -r1.22.2.4
--- User.java   22 Jul 2008 12:03:37 -0000      1.22.2.3
+++ User.java   8 Dec 2008 16:31:47 -0000       1.22.2.4
@@ -27,7 +27,7 @@
  * @author Eduard Witteveen
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: User.java,v 1.22.2.3 2008/07/22 12:03:37 michiel Exp $
+ * @version $Id: User.java,v 1.22.2.4 2008/12/08 16:31:47 michiel Exp $
  * @see    org.mmbase.security.implementation.cloudcontext.builders.Users
  */
 public class User extends BasicUser implements WeakNodeEventListener {
@@ -73,7 +73,7 @@
         if (node == null) {
             return Rank.ANONYMOUS;
         } else {
-            return Users.getBuilder().getRank(node);
+            return Authenticate.getInstance().getUserProvider().getRank(node);
         }
     }
 
@@ -82,7 +82,7 @@
         if (node == null) {
             return "system";
         } else {
-            return Users.getBuilder().getDefaultContext(node);
+            return 
Authenticate.getInstance().getUserProvider().getDefaultContext(node);
         }
     }
 
@@ -100,7 +100,7 @@
      * @javadoc
      */
     public boolean isValidNode() {
-        return (node == null) ||  Users.getBuilder().isValid(node);
+        return (node == null) ||  
Authenticate.getInstance().getUserProvider().isValid(node);
     }
 
 
@@ -125,7 +125,8 @@
                 log.service("Node was invalidated!");
                 node = null; // invalidate
             } else if (ne.getType() == Event.TYPE_CHANGE) {
-                node = Users.getBuilder().getNode(ne.getNodeNumber());
+                MMObjectBuilder users = 
Authenticate.getInstance().getUserProvider().getUserBuilder();
+                node = users.getNode(ne.getNodeNumber());
             }
         }
     }
@@ -140,7 +141,8 @@
             org.mmbase.util.ThreadPools.jobsExecutor.execute(new Runnable() {
                     public void run() {
                         
org.mmbase.bridge.LocalContext.getCloudContext().assertUp();
-                        node = Users.getBuilder().getNode(number);
+                        MMObjectBuilder users = 
Authenticate.getInstance().getUserProvider().getUserBuilder();
+                        node = users.getNode(number);
                     }
                 });
         }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to