[jboss-svn-commits] JBL Code SVN: r33506 - in labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main: java/org/jboss/labs/sbs/plugin/nukesauth/dao and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 15 08:28:51 EDT 2010


Author: lkrzyzanek
Date: 2010-06-15 08:28:51 -0400 (Tue, 15 Jun 2010)
New Revision: 33506

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/EmailResetJBossPasswordToken.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml
Log:
ORG-606 Added reset password for Nukes users without SBS account. Setting password is in same way like in SBS - via token.

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -130,4 +130,11 @@
   public boolean sendPasswordResetToken(NukesUser nukesUser, Locale locale)
       throws EmailResetPasswordAlreadySentException;
 
+  /**
+   * Remove password token
+   * 
+   * @param username
+   */
+  public void removePasswordResetToken(String username);
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -308,6 +308,11 @@
     return fromName;
   }
 
+  @Override
+  public void removePasswordResetToken(String username) {
+    nukesUserDAO.removeResetToken(username);
+  }
+
   public void setNukesUserDAO(NukesUserDAO nukesUserDAO) {
     this.nukesUserDAO = nukesUserDAO;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -98,4 +98,13 @@
    */
   public User getMasterAccount(String nukesAccountEmail);
 
+  /**
+   * Check if username is SBS account
+   * 
+   * @param username
+   * @param caseInsensitive true if the case doesn't matter, false otherwise
+   * @return true if account with same username exists
+   */
+  public boolean isSBSAccount(String username, boolean caseInsensitive);
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -226,6 +226,15 @@
     return userManager.getUser(filter);
   }
 
+  @Override
+  public boolean isSBSAccount(String username, boolean caseInsensitive) {
+    if (userManager.getUser(new UserTemplate(username), caseInsensitive) != null) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
   public void setUserManager(UserManager userManager) {
     this.userManager = userManager;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -154,4 +154,13 @@
     getSimpleJdbcTemplate().update("UPDATE nuke_users SET pn_pass_reset_last_sent = ? WHERE pn_uname = ?", lastSent,
         username);
   }
+
+  @Override
+  public void removeResetToken(String username) {
+    getSimpleJdbcTemplate().update(
+        "UPDATE nuke_users "
+            + "SET pn_pass_reset_token = null, pn_pass_reset_timestamp = null, pn_pass_reset_last_sent = null "
+            + "WHERE pn_uname = ?", username);
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -99,4 +99,11 @@
    */
   public void updateResetTokenLastSent(String username, Long lastSent);
 
+  /**
+   * Remove reset password token
+   * 
+   * @param username
+   */
+  public void removeResetToken(String username);
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/EmailResetJBossPasswordToken.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/EmailResetJBossPasswordToken.java	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/EmailResetJBossPasswordToken.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -29,7 +29,6 @@
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
 
 import com.jivesoftware.base.User;
-import com.jivesoftware.base.UserTemplate;
 import com.jivesoftware.community.action.EmailResetPasswordToken;
 import com.jivesoftware.community.action.util.AlwaysAllowAnonymous;
 import com.jivesoftware.community.web.struts.SetReferer;
@@ -59,7 +58,7 @@
       addActionError(getText("rstpwd.err.mustEntrUsrname.text"));
       return;
     }
-    if (isSBSAccount(getUsername())) {
+    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
       super.validate();
     }
 
@@ -71,19 +70,9 @@
     log.debug("Account is Nukes Account");
   }
 
-  private boolean isSBSAccount(String username) {
-    if (userManager.getUser(new UserTemplate(getUsername()), !isPasswordResetCaseSensitive()) != null) {
-      log.debug("Account is SBS account");
-      return true;
-    } else {
-      log.debug("Account is NOT SBS account");
-      return false;
-    }
-  }
-
   @Override
   public String execute() {
-    if (isSBSAccount(getUsername())) {
+    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
       return super.execute();
     }
     if (!isPasswordResetSupported()) {

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java	2010-06-15 12:28:51 UTC (rev 33506)
@@ -0,0 +1,143 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.sbs.plugin.nukesauth.struts;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.jboss.labs.sbs.plugin.nukesauth.NukesAccountManager;
+import org.jboss.labs.sbs.plugin.nukesauth.SbsAccountManager;
+import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
+
+import com.jivesoftware.community.action.ResetPassword;
+import com.jivesoftware.community.action.util.AlwaysAllowAnonymous;
+import com.jivesoftware.community.web.struts.SetReferer;
+
+/**
+ * Action extends {@link ResetPassword} action and provides reseting password
+ * for nukes accounts (without SBS account)
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+ at AlwaysAllowAnonymous
+ at SetReferer(false)
+public class ResetJBossPasswordAction extends ResetPassword {
+
+  private static final Logger log = LogManager.getLogger(ResetJBossPasswordAction.class);
+
+  private boolean success;
+
+  private SbsAccountManager sbsAccountManager;
+
+  private NukesAccountManager nukesAccountManager;
+
+  @Override
+  public String execute() {
+    if (!isPasswordResetSupported()) {
+      addActionMessage(getText("rstpwd.err.func_disabled.text"));
+      return ERROR;
+    }
+
+    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
+      return super.execute();
+    }
+
+    // first, validate the password token
+    if (!isValidPasswordNukesToken()) {
+      addActionError(getText("rstpwd.err.tokenErrMsg.instruc"));
+      addFieldError("token", getText("rstpwd.err.invalid_token.text"));
+      return INPUT;
+    }
+
+    log.debug("Token is valid. Set password for nukes account");
+
+    try {
+      NukesUser nukesUser = nukesAccountManager.getAccountByUsername(getUsername());
+      if (null == nukesUser) {
+        addActionError(getText("rstpwd.err.invalid_token.text"));
+        return ERROR;
+      }
+
+      nukesAccountManager.updateNukesPassword(getUsername(), getNewPassword());
+
+      nukesAccountManager.removePasswordResetToken(getUsername());
+    } catch (Exception e) {
+      addActionError(getText("rstpwd.err.invalid_token.text"));
+      return ERROR;
+    }
+
+    success = true;
+
+    return SUCCESS;
+  }
+
+  @Override
+  public boolean isSuccess() {
+    return success;
+  }
+
+  /**
+   * Check if nukes password token is valid
+   * 
+   * @return
+   * @see ResetPassword#isValidPasswordToken
+   * 
+   */
+  private boolean isValidPasswordNukesToken() {
+    String dbToken;
+    long now = System.currentTimeMillis();
+    Long timeStamp;
+
+    NukesUser nukesUser = nukesAccountManager.getAccountByUsername(getUsername());
+    if (null == nukesUser) {
+      return false;
+    }
+
+    dbToken = nukesUser.getPasswordResetToken();
+    timeStamp = nukesUser.getPasswordResetTimestamp();
+    // Check validity of token
+    if (dbToken == null || timeStamp == null) {
+      return false;
+    }
+
+    if (now - timeStamp > 72 * 60 * 60 * 1000) {
+      log.debug("Token in Nukes DB is too old (is not valid) - delete it");
+      try {
+        nukesAccountManager.removePasswordResetToken(getUsername());
+      } catch (Exception e) {
+        log.error("Unable to delete user password reset properties");
+      }
+      return false;
+    } else {
+      return dbToken.equals(getToken());
+    }
+
+  }
+
+  public void setSbsAccountManager(SbsAccountManager sbsAccountManager) {
+    this.sbsAccountManager = sbsAccountManager;
+  }
+
+  public void setNukesAccountManager(NukesAccountManager nukesAccountManager) {
+    this.nukesAccountManager = nukesAccountManager;
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml	2010-06-15 11:40:10 UTC (rev 33505)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml	2010-06-15 12:28:51 UTC (rev 33506)
@@ -45,6 +45,13 @@
       <result name="error">/template/global/email-password.ftl</result>
     </action>
 
+    <action name="resetJBossPassword"
+      class="org.jboss.labs.sbs.plugin.nukesauth.struts.ResetJBossPasswordAction">
+      <result name="cancel" type="redirect">index.jspa</result>
+      <result name="input">/template/global/reset-password.ftl</result>
+      <result name="success">/template/global/reset-password.ftl</result>
+    </action>
+
   </package>
 
 </struts>



More information about the jboss-svn-commits mailing list