From 5cd7fb84088f5fb413665f8004b93bda668bf25e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 5 Oct 2012 11:32:45 -0700 Subject: [PATCH] CLOUDSTACK-121: Fixed "Incorrect username/domainId login causes NullPointerException " --- api/src/com/cloud/user/UserAccount.java | 2 ++ server/src/com/cloud/user/AccountManagerImpl.java | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/api/src/com/cloud/user/UserAccount.java b/api/src/com/cloud/user/UserAccount.java index 734e16b0f8f..2a6bd4f33e3 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(); } diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index a79251b0463..3fd0e17886e 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; }