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; }
