CLOUDSTACK-121: Fixed "Incorrect username/domainId login causes 
NullPointerException "


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/5cd7fb84
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/5cd7fb84
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/5cd7fb84

Branch: refs/heads/javelin
Commit: 5cd7fb84088f5fb413665f8004b93bda668bf25e
Parents: e7e4862
Author: Rohit Yadav <[email protected]>
Authored: Fri Oct 5 11:32:45 2012 -0700
Committer: Alex Huang <[email protected]>
Committed: Fri Oct 5 11:42:04 2012 -0700

----------------------------------------------------------------------
 api/src/com/cloud/user/UserAccount.java           |    2 ++
 server/src/com/cloud/user/AccountManagerImpl.java |   15 ++++++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5cd7fb84/api/src/com/cloud/user/UserAccount.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/user/UserAccount.java 
b/api/src/com/cloud/user/UserAccount.java
index 734e16b..2a6bd4f 100644
--- a/api/src/com/cloud/user/UserAccount.java
+++ b/api/src/com/cloud/user/UserAccount.java
@@ -56,4 +56,6 @@ public interface UserAccount {
     String getRegistrationToken();
 
     boolean isRegistered();
+
+    int getLoginAttempts();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5cd7fb84/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManagerImpl.java 
b/server/src/com/cloud/user/AccountManagerImpl.java
index a79251b..3fd0e17 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -1862,24 +1862,25 @@ public class AccountManagerImpl implements 
AccountManager, AccountService, Manag
             }
 
             UserAccount userAccount = _userAccountDao.getUserAccount(username, 
domainId);
-            UserAccountVO user = _userAccountDao.findById(userAccount.getId());
-            if (user != null) {
-                if ((user.getState().toString()).equals("enabled")) {
-                    if (!isInternalAccount(user.getType())) {
+            if (userAccount != null) {
+                if 
(userAccount.getState().equalsIgnoreCase(Account.State.enabled.toString())) {
+                    if (!isInternalAccount(userAccount.getType())) {
                         //Internal accounts are not disabled
-                        int attemptsMade = user.getLoginAttempts() + 1;
+                        int attemptsMade = userAccount.getLoginAttempts() + 1;
                         if (attemptsMade < _allowedLoginAttempts) {
                             updateLoginAttempts(userAccount.getId(), 
attemptsMade, false);
                             s_logger.warn("Login attempt failed. You have " + 
( _allowedLoginAttempts - attemptsMade ) + " attempt(s) remaining");
                         } else {
                             updateLoginAttempts(userAccount.getId(), 
_allowedLoginAttempts, true);
-                            s_logger.warn("User " + user.getUsername() + " has 
been disabled due to multiple failed login attempts." +
+                            s_logger.warn("User " + userAccount.getUsername() 
+ " has been disabled due to multiple failed login attempts." +
                                     " Please contact admin.");
                         }
                     }
                 } else {
-                    s_logger.info("User " + user.getUsername() + " is 
disabled/locked");
+                    s_logger.info("User " + userAccount.getUsername() + " is 
disabled/locked");
                 }
+            } else {
+                s_logger.warn("Authentication failure: No user with name " + 
username + " for domainId " + domainId);
             }
             return null;
         }

Reply via email to