Author: solomax
Date: Fri Mar 14 16:34:13 2014
New Revision: 1577604

URL: http://svn.apache.org/r1577604
Log:
[OPENMEETINGS-943] User authenticated by LDAP is able to login

Modified:
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
    
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
    
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java
 Fri Mar 14 16:34:13 2014
@@ -218,8 +218,7 @@ public class UserManager implements IUse
        public Object loginUser(String SID, String userOrEmail, String userpass,
                        Client currentClient, IClient client, Boolean 
storePermanent) {
                try {
-                       log.debug("Login user SID : " + SID + " Stored 
Permanent :"
-                                       + storePermanent);
+                       log.debug("Login user SID : " + SID + " Stored 
Permanent: " + storePermanent);
                        String hql = "SELECT c from User AS c "
                                        + "WHERE "
                                        + "(c.login LIKE :userOrEmail OR 
c.adresses.email LIKE :userOrEmail  ) "
@@ -239,13 +238,10 @@ public class UserManager implements IUse
                                User users = ll.get(0);
 
                                // Refresh User Object
-                               users = this.refreshUserObject(users);
+                               users = refreshUserObject(users);
 
                                if (usersDao.verifyPassword(users.getUser_id(), 
userpass)) {
-
-                                       Boolean bool = 
sessiondataDao.updateUser(SID,
-                                                       users.getUser_id(), 
storePermanent,
-                                                       users.getLanguage_id());
+                                       Boolean bool = 
sessiondataDao.updateUser(SID, users.getUser_id(), storePermanent, 
users.getLanguage_id());
                                        if (bool == null) {
                                                // Exception
                                                return new Long(-1);
@@ -255,8 +251,7 @@ public class UserManager implements IUse
                                        }
 
                                        // Check if activated
-                                       if (users.getStatus() != null
-                                                       && 
users.getStatus().equals(0)) {
+                                       if (users.getStatus() != null && 
users.getStatus().equals(0)) {
                                                return -41L;
                                        }
 
@@ -270,8 +265,7 @@ public class UserManager implements IUse
 
                                        log.debug("loginUser " + 
users.getOrganisation_users());
                                        if 
(!users.getOrganisation_users().isEmpty()) {
-                                               log.debug("loginUser size "
-                                                               + 
users.getOrganisation_users().size());
+                                               log.debug("loginUser size " + 
users.getOrganisation_users().size());
                                        } else {
                                                throw new Exception("No 
Organization assigned to user");
                                        }

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
 Fri Mar 14 16:34:13 2014
@@ -27,6 +27,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Random;
+import java.util.UUID;
 import java.util.Vector;
 
 import org.apache.openmeetings.data.user.UserManager;
@@ -40,6 +41,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.ldap.config.ConfigReader;
 import org.apache.openmeetings.remote.util.SessionVariablesUtil;
@@ -73,9 +75,6 @@ public class LdapLoginManagement impleme
        @Autowired
        private TimezoneUtil timezoneUtil;
 
-       // External User Types
-       public static final String EXTERNAL_USER_TYPE_LDAP = "LDAP";
-
        // ConfigConstants
        public static final String CONFIGKEY_LDAP_URL = "ldap_conn_url";
        public static final String CONFIGKEY_LDAP_ADMIN_DN = "ldap_admin_dn";
@@ -481,9 +480,8 @@ public class LdapLoginManagement impleme
                                Long userid;
                                if (ldap_sync_passwd_to_om) {
                                        Random r = new Random();
-                                       String token = 
Long.toString(Math.abs(r.nextLong()), 36);
-                                       log.debug("Synching Ldap user to OM DB 
with RANDOM password: "
-                                                       + token);
+                                       String token = 
UUID.randomUUID().toString() + Long.toString(Math.abs(r.nextLong()), 36);
+                                       log.debug("Synching Ldap user to OM DB 
with RANDOM password: " + token);
                                        userid = 
createUserFromLdapData(userData, token, user, ldapAttrs);
                                } else {
                                        log.debug("Synching Ldap user to OM DB 
with password");
@@ -513,10 +511,11 @@ public class LdapLoginManagement impleme
                                // Return UserObject
                                User u2 = userManager.getUserById(userid);
 
-                               if (u2 == null)
+                               if (u2 == null) {
                                        return new Long(-1);
+                               }
 
-                               
u2.setExternalUserType(EXTERNAL_USER_TYPE_LDAP); // TIBO
+                               u2.setType(Type.ldap);
 
                                // initialize lazy collection
                                userManager.refreshUserObject(u2);
@@ -524,7 +523,6 @@ public class LdapLoginManagement impleme
                                log.debug("getUserbyId : " + userid + " : " + 
u2.getLogin());
 
                                return u2;
-
                        } catch (Exception e) {
                                log.error("Error on Working Userdata : ", e);
                                return new Long(-1);
@@ -729,49 +727,47 @@ public class LdapLoginManagement impleme
        
                // Retrieve Data from LDAP - Data
        
-               if (userdata.containsKey(ldapAttrs.get("lastnameAttr"))
-                               && userdata.get(ldapAttrs.get("lastnameAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("lastnameAttr")) && 
userdata.get(ldapAttrs.get("lastnameAttr")) != null)
                        
user.setLastname(userdata.get(ldapAttrs.get("lastnameAttr")));
        
-               if (userdata.containsKey(ldapAttrs.get("firstnameAttr"))
-                               && userdata.get(ldapAttrs.get("firstnameAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("firstnameAttr")) && 
userdata.get(ldapAttrs.get("firstnameAttr")) != null)
                        
user.setFirstname(userdata.get(ldapAttrs.get("firstnameAttr")));
        
-               if (userdata.containsKey(ldapAttrs.get("mailAttr"))
-                               && userdata.get(ldapAttrs.get("mailAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("mailAttr")) && 
userdata.get(ldapAttrs.get("mailAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setEmail(userdata.get(ldapAttrs.get("mailAttr")));
+                       }
                }
                        
-               if (userdata.containsKey(ldapAttrs.get("streetAttr"))
-                               && userdata.get(ldapAttrs.get("streetAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("streetAttr")) && 
userdata.get(ldapAttrs.get("streetAttr")) != null) {
+                       if (user.getAdresses() != null) { 
                                
user.getAdresses().setStreet(userdata.get(ldapAttrs.get("streetAttr")));
+                       }
                }
                
-               if (userdata.containsKey(ldapAttrs.get("additionalNameAttr"))
-                               && 
userdata.get(ldapAttrs.get("additionalNameAttr")) != null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("additionalNameAttr")) 
&& userdata.get(ldapAttrs.get("additionalNameAttr")) != null) {
+                       if (user.getAdresses() != null) { 
                                
user.getAdresses().setAdditionalname(userdata.get(ldapAttrs.get("additionalNameAttr")));
+                       }
                }
        
-               if (userdata.containsKey(ldapAttrs.get("faxAttr"))
-                               && userdata.get(ldapAttrs.get("faxAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("faxAttr")) && 
userdata.get(ldapAttrs.get("faxAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setFax(userdata.get(ldapAttrs.get("faxAttr")));
+                       }
                }
        
-               if (userdata.containsKey(ldapAttrs.get("zipAttr"))
-                               && userdata.get(ldapAttrs.get("zipAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("zipAttr")) && 
userdata.get(ldapAttrs.get("zipAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setZip(userdata.get(ldapAttrs.get("zipAttr")));
+                       }
                }
        
                long state_id = -1;
                String state = null;
-               if (userdata.containsKey(ldapAttrs.get("countryAttr"))
-                               && userdata.get(ldapAttrs.get("countryAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("countryAttr")) && 
userdata.get(ldapAttrs.get("countryAttr")) != null) {
                        state = userdata.get(ldapAttrs.get("countryAttr"));
+               }
                
                if (state != null) {
                        // Lookup for states
@@ -783,28 +779,28 @@ public class LdapLoginManagement impleme
                // Create Country if not found
                if (state_id < 0) {
                        Long id = statemanagement.addState(state);
-                       if (id != null)
+                       if (id != null) {
                                state_id = id;
+                       }
 
                }
                if (user.getAdresses() != null && state_id > 0) {
                        
user.getAdresses().setStates(statemanagement.getStateById(state_id));
                }
                
-               if (userdata.containsKey(ldapAttrs.get("townAttr"))
-                               && userdata.get(ldapAttrs.get("townAttr")) != 
null) {
-                       if (user.getAdresses() != null )
+               if (userdata.containsKey(ldapAttrs.get("townAttr")) && 
userdata.get(ldapAttrs.get("townAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setTown(userdata.get(ldapAttrs.get("townAttr")));
+                       }
                }
 
-               if (userdata.containsKey(ldapAttrs.get("phoneAttr"))
-                               && userdata.get(ldapAttrs.get("phoneAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("phoneAttr")) && 
userdata.get(ldapAttrs.get("phoneAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setPhone(userdata.get(ldapAttrs.get("phoneAttr")));
+                       }
                }
                
-               if (userdata.containsKey(ldapAttrs.get("pictureUri"))
-                               && userdata.get(ldapAttrs.get("pictureUri")) != 
null) {
+               if (userdata.containsKey(ldapAttrs.get("pictureUri")) && 
userdata.get(ldapAttrs.get("pictureUri")) != null) {
                        
user.setPictureuri(userdata.get(ldapAttrs.get("pictureUri")));
                }
        

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 Fri Mar 14 16:34:13 2014
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.app;
 
 import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.AuthLevelUtil.checkAdminLevel;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
@@ -54,8 +55,8 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
-import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.web.pages.SwfPage;
 import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
@@ -158,7 +159,7 @@ public class WebSession extends Abstract
                }
                if (isSignedIn()) {
                        r = new Roles(Roles.USER);
-                       if (AuthLevelUtil.checkAdminLevel(userLevel)) {
+                       if (checkAdminLevel(userLevel)) {
                                r.add(Roles.ADMIN);
                        }
                }
@@ -242,15 +243,20 @@ public class WebSession extends Abstract
        public boolean signIn(String login, String password, String 
ldapConfigFileName) {
                Sessiondata sessData = 
getBean(SessiondataDao.class).startsession();
                SID = sessData.getSession_id();
-               Object u = Strings.isEmpty(ldapConfigFileName)
+               Object _u = Strings.isEmpty(ldapConfigFileName)
                                ? getBean(IUserManager.class).loginUser(SID, 
login, password, null, null, false)
                                : 
getBean(ILdapLoginManagement.class).doLdapLogin(login, password, null, null, 
SID, ldapConfigFileName);
                
-               if (u instanceof User) {
-                       setUser((User)u);
+               if (_u instanceof User) {
+                       User u = (User)_u;
+                       if (!checkAdminLevel(u.getLevel_id()) && Type.ldap == 
u.getType() && Strings.isEmpty(ldapConfigFileName)) {
+                               //user is LDAP and is not admin, then 
authentication should be done on the LDAP server (even if the LDAP server is 
down)
+                               return false;
+                       }
+                       setUser(u);
                        return true;
-               } else if (u instanceof Long) {
-                       loginError = (Long)u;
+               } else if (_u instanceof Long) {
+                       loginError = (Long)_u;
                }
                return false;
        }

Modified: 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/user/UserManager.java
 Fri Mar 14 16:34:13 2014
@@ -218,8 +218,7 @@ public class UserManager implements IUse
        public Object loginUser(String SID, String userOrEmail, String userpass,
                        Client currentClient, IClient client, Boolean 
storePermanent) {
                try {
-                       log.debug("Login user SID : " + SID + " Stored 
Permanent :"
-                                       + storePermanent);
+                       log.debug("Login user SID : " + SID + " Stored 
Permanent: " + storePermanent);
                        String hql = "SELECT c from User AS c "
                                        + "WHERE "
                                        + "(c.login LIKE :userOrEmail OR 
c.adresses.email LIKE :userOrEmail  ) "
@@ -239,13 +238,10 @@ public class UserManager implements IUse
                                User users = ll.get(0);
 
                                // Refresh User Object
-                               users = this.refreshUserObject(users);
+                               users = refreshUserObject(users);
 
                                if (usersDao.verifyPassword(users.getUser_id(), 
userpass)) {
-
-                                       Boolean bool = 
sessiondataDao.updateUser(SID,
-                                                       users.getUser_id(), 
storePermanent,
-                                                       users.getLanguage_id());
+                                       Boolean bool = 
sessiondataDao.updateUser(SID, users.getUser_id(), storePermanent, 
users.getLanguage_id());
                                        if (bool == null) {
                                                // Exception
                                                return new Long(-1);
@@ -255,8 +251,7 @@ public class UserManager implements IUse
                                        }
 
                                        // Check if activated
-                                       if (users.getStatus() != null
-                                                       && 
users.getStatus().equals(0)) {
+                                       if (users.getStatus() != null && 
users.getStatus().equals(0)) {
                                                return -41L;
                                        }
 
@@ -270,8 +265,7 @@ public class UserManager implements IUse
 
                                        log.debug("loginUser " + 
users.getOrganisation_users());
                                        if 
(!users.getOrganisation_users().isEmpty()) {
-                                               log.debug("loginUser size "
-                                                               + 
users.getOrganisation_users().size());
+                                               log.debug("loginUser size " + 
users.getOrganisation_users().size());
                                        } else {
                                                throw new Exception("No 
Organization assigned to user");
                                        }

Modified: 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
 Fri Mar 14 16:34:13 2014
@@ -27,6 +27,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Random;
+import java.util.UUID;
 import java.util.Vector;
 
 import org.apache.openmeetings.data.user.UserManager;
@@ -40,6 +41,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.ldap.config.ConfigReader;
 import org.apache.openmeetings.remote.util.SessionVariablesUtil;
@@ -73,9 +75,6 @@ public class LdapLoginManagement impleme
        @Autowired
        private TimezoneUtil timezoneUtil;
 
-       // External User Types
-       public static final String EXTERNAL_USER_TYPE_LDAP = "LDAP";
-
        // ConfigConstants
        public static final String CONFIGKEY_LDAP_URL = "ldap_conn_url";
        public static final String CONFIGKEY_LDAP_ADMIN_DN = "ldap_admin_dn";
@@ -481,9 +480,8 @@ public class LdapLoginManagement impleme
                                Long userid;
                                if (ldap_sync_passwd_to_om) {
                                        Random r = new Random();
-                                       String token = 
Long.toString(Math.abs(r.nextLong()), 36);
-                                       log.debug("Synching Ldap user to OM DB 
with RANDOM password: "
-                                                       + token);
+                                       String token = 
UUID.randomUUID().toString() + Long.toString(Math.abs(r.nextLong()), 36);
+                                       log.debug("Synching Ldap user to OM DB 
with RANDOM password: " + token);
                                        userid = 
createUserFromLdapData(userData, token, user, ldapAttrs);
                                } else {
                                        log.debug("Synching Ldap user to OM DB 
with password");
@@ -513,10 +511,11 @@ public class LdapLoginManagement impleme
                                // Return UserObject
                                User u2 = userManager.getUserById(userid);
 
-                               if (u2 == null)
+                               if (u2 == null) {
                                        return new Long(-1);
+                               }
 
-                               
u2.setExternalUserType(EXTERNAL_USER_TYPE_LDAP); // TIBO
+                               u2.setType(Type.ldap);
 
                                // initialize lazy collection
                                userManager.refreshUserObject(u2);
@@ -524,7 +523,6 @@ public class LdapLoginManagement impleme
                                log.debug("getUserbyId : " + userid + " : " + 
u2.getLogin());
 
                                return u2;
-
                        } catch (Exception e) {
                                log.error("Error on Working Userdata : ", e);
                                return new Long(-1);
@@ -729,49 +727,47 @@ public class LdapLoginManagement impleme
        
                // Retrieve Data from LDAP - Data
        
-               if (userdata.containsKey(ldapAttrs.get("lastnameAttr"))
-                               && userdata.get(ldapAttrs.get("lastnameAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("lastnameAttr")) && 
userdata.get(ldapAttrs.get("lastnameAttr")) != null)
                        
user.setLastname(userdata.get(ldapAttrs.get("lastnameAttr")));
        
-               if (userdata.containsKey(ldapAttrs.get("firstnameAttr"))
-                               && userdata.get(ldapAttrs.get("firstnameAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("firstnameAttr")) && 
userdata.get(ldapAttrs.get("firstnameAttr")) != null)
                        
user.setFirstname(userdata.get(ldapAttrs.get("firstnameAttr")));
        
-               if (userdata.containsKey(ldapAttrs.get("mailAttr"))
-                               && userdata.get(ldapAttrs.get("mailAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("mailAttr")) && 
userdata.get(ldapAttrs.get("mailAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setEmail(userdata.get(ldapAttrs.get("mailAttr")));
+                       }
                }
                        
-               if (userdata.containsKey(ldapAttrs.get("streetAttr"))
-                               && userdata.get(ldapAttrs.get("streetAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("streetAttr")) && 
userdata.get(ldapAttrs.get("streetAttr")) != null) {
+                       if (user.getAdresses() != null) { 
                                
user.getAdresses().setStreet(userdata.get(ldapAttrs.get("streetAttr")));
+                       }
                }
                
-               if (userdata.containsKey(ldapAttrs.get("additionalNameAttr"))
-                               && 
userdata.get(ldapAttrs.get("additionalNameAttr")) != null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("additionalNameAttr")) 
&& userdata.get(ldapAttrs.get("additionalNameAttr")) != null) {
+                       if (user.getAdresses() != null) { 
                                
user.getAdresses().setAdditionalname(userdata.get(ldapAttrs.get("additionalNameAttr")));
+                       }
                }
        
-               if (userdata.containsKey(ldapAttrs.get("faxAttr"))
-                               && userdata.get(ldapAttrs.get("faxAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("faxAttr")) && 
userdata.get(ldapAttrs.get("faxAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setFax(userdata.get(ldapAttrs.get("faxAttr")));
+                       }
                }
        
-               if (userdata.containsKey(ldapAttrs.get("zipAttr"))
-                               && userdata.get(ldapAttrs.get("zipAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("zipAttr")) && 
userdata.get(ldapAttrs.get("zipAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setZip(userdata.get(ldapAttrs.get("zipAttr")));
+                       }
                }
        
                long state_id = -1;
                String state = null;
-               if (userdata.containsKey(ldapAttrs.get("countryAttr"))
-                               && userdata.get(ldapAttrs.get("countryAttr")) 
!= null)
+               if (userdata.containsKey(ldapAttrs.get("countryAttr")) && 
userdata.get(ldapAttrs.get("countryAttr")) != null) {
                        state = userdata.get(ldapAttrs.get("countryAttr"));
+               }
                
                if (state != null) {
                        // Lookup for states
@@ -783,28 +779,28 @@ public class LdapLoginManagement impleme
                // Create Country if not found
                if (state_id < 0) {
                        Long id = statemanagement.addState(state);
-                       if (id != null)
+                       if (id != null) {
                                state_id = id;
+                       }
 
                }
                if (user.getAdresses() != null && state_id > 0) {
                        
user.getAdresses().setStates(statemanagement.getStateById(state_id));
                }
                
-               if (userdata.containsKey(ldapAttrs.get("townAttr"))
-                               && userdata.get(ldapAttrs.get("townAttr")) != 
null) {
-                       if (user.getAdresses() != null )
+               if (userdata.containsKey(ldapAttrs.get("townAttr")) && 
userdata.get(ldapAttrs.get("townAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setTown(userdata.get(ldapAttrs.get("townAttr")));
+                       }
                }
 
-               if (userdata.containsKey(ldapAttrs.get("phoneAttr"))
-                               && userdata.get(ldapAttrs.get("phoneAttr")) != 
null) {
-                       if (user.getAdresses() != null ) 
+               if (userdata.containsKey(ldapAttrs.get("phoneAttr")) && 
userdata.get(ldapAttrs.get("phoneAttr")) != null) {
+                       if (user.getAdresses() != null) {
                                
user.getAdresses().setPhone(userdata.get(ldapAttrs.get("phoneAttr")));
+                       }
                }
                
-               if (userdata.containsKey(ldapAttrs.get("pictureUri"))
-                               && userdata.get(ldapAttrs.get("pictureUri")) != 
null) {
+               if (userdata.containsKey(ldapAttrs.get("pictureUri")) && 
userdata.get(ldapAttrs.get("pictureUri")) != null) {
                        
user.setPictureuri(userdata.get(ldapAttrs.get("pictureUri")));
                }
        

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1577604&r1=1577603&r2=1577604&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 Fri Mar 14 16:34:13 2014
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.app;
 
 import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.AuthLevelUtil.checkAdminLevel;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
@@ -54,8 +55,8 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
-import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.web.pages.SwfPage;
 import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
@@ -158,7 +159,7 @@ public class WebSession extends Abstract
                }
                if (isSignedIn()) {
                        r = new Roles(Roles.USER);
-                       if (AuthLevelUtil.checkAdminLevel(userLevel)) {
+                       if (checkAdminLevel(userLevel)) {
                                r.add(Roles.ADMIN);
                        }
                }
@@ -242,15 +243,20 @@ public class WebSession extends Abstract
        public boolean signIn(String login, String password, String 
ldapConfigFileName) {
                Sessiondata sessData = 
getBean(SessiondataDao.class).startsession();
                SID = sessData.getSession_id();
-               Object u = Strings.isEmpty(ldapConfigFileName)
+               Object _u = Strings.isEmpty(ldapConfigFileName)
                                ? getBean(IUserManager.class).loginUser(SID, 
login, password, null, null, false)
                                : 
getBean(ILdapLoginManagement.class).doLdapLogin(login, password, null, null, 
SID, ldapConfigFileName);
                
-               if (u instanceof User) {
-                       setUser((User)u);
+               if (_u instanceof User) {
+                       User u = (User)_u;
+                       if (!checkAdminLevel(u.getLevel_id()) && Type.ldap == 
u.getType() && Strings.isEmpty(ldapConfigFileName)) {
+                               //user is LDAP and is not admin, then 
authentication should be done on the LDAP server (even if the LDAP server is 
down)
+                               return false;
+                       }
+                       setUser(u);
                        return true;
-               } else if (u instanceof Long) {
-                       loginError = (Long)u;
+               } else if (_u instanceof Long) {
+                       loginError = (Long)_u;
                }
                return false;
        }


Reply via email to