private boolean validateKey(String key) {

    // If user loged in invalidate session first
    FacesContext ctx = FacesContext.getCurrentInstance();
    HttpServletRequest req = (HttpServletRequest) ctx.getExternalContext().getRequest();

    /*
    if (req.getRemoteUser() != null) {
      HttpSession session = (HttpSession) ctx.getExternalContext().getSession(
              false);

      if (null != session) {
        session.invalidate();
        return false;
      }
    } */

    Users user = mgr.getUserByUsername(username);

    if (user.getStatus() != PeopleAccountStatus.ACCOUNT_VERIFICATION.getValue()) {
      am.registerAccountChange(
          user,
          AccountsAuditActions.REGISTRATION.name(),
          AccountsAuditActions.FAILED.name(),
          "Could not verify the account due to wrnong status.",
          user);

      return false;
    }

    if (key.equals(user.getValidationKey())) {
      if (user.getMode() == PeopleAccountStatus.YUBIKEY_USER.getValue()) {

        mgr.changeAccountStatus(
            user.getUid(), "", PeopleAccountStatus.YUBIKEY_ACCOUNT_INACTIVE.getValue());

      } else if (user.getMode() == PeopleAccountStatus.MOBILE_USER.getValue()) {

        mgr.changeAccountStatus(
            user.getUid(), "", PeopleAccountStatus.MOBILE_ACCOUNT_INACTIVE.getValue());
      }

      am.registerAccountChange(
          user,
          AccountsAuditActions.REGISTRATION.name(),
          AccountsAuditActions.SUCCESS.name(),
          "Verified account email address.",
          user);

      mgr.resetKey(user.getUid());
      return true;
    }

    int val = user.getFalseLogin();
    mgr.increaseLockNum(user.getUid(), val + 1);

    if (val > AuthenticationConstants.ALLOWED_FALSE_LOGINS) {
      mgr.changeAccountStatus(
          user.getUid(), "SPAM Acccount", PeopleAccountStatus.SPAM_ACCOUNT.getValue());
      mgr.resetKey(user.getUid());
      mgr.resetKey(user.getUid());
      am.registerAccountChange(
          user,
          AccountsAuditActions.REGISTRATION.name(),
          AccountsAuditActions.FAILED.name(),
          "Too many false activation attemps.",
          user);
    }

    return false;
  }
 /**
  * Returns the hdfs username for the user in this project
  *
  * <p>
  *
  * @param project
  * @param user
  * @return
  */
 public String getHdfsUserName(Project project, Users user) {
   if (project == null || user == null) {
     return null;
   }
   return project.getName() + USER_NAME_DELIMITER + user.getUsername();
 }