public boolean changePassword(final String username, String currentPassword, String newPassword) {
	    boolean success = false;
	    final MappedUser user = getDbAccess().findMappedUser(username);

	    if (user == null || user.getId() == -1) {
	        log4jLogger.warn(Conca.t("cannot find user [", username, "] while trying to change password"));
	    
	    } else {
	        final String saltedPwHash = findSaltedPasswordHash(username, currentPassword);
	        if (saltedPwHash != null) { 
	            final MappedUser authUser = getDbAccess().userAndPasswordMatch(username, saltedPwHash);
	            
	            if (authUser != null && authUser.isActive() && authUser.getId() != -1) {
	                final String salt = getDbAccess().findSalt(username);
	                String hashPw;

	                try {
                        hashPw = SimplePasswordTools.hashPassAndSalt(newPassword, salt);
                        success = getDbAccess().updateUserPassword(authUser.getId(), hashPw);
                    } catch (Exception e) {
                        log4jLogger.warn(Conca.t("error occurred while attempting to hash pw for user [", username, "]"), e);
                    }
	            }
	        }
	    }
	    
	    return success;
	}