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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 25 09:21:24 EDT 2010


Author: lkrzyzanek
Date: 2010-08-25 09:21:23 -0400 (Wed, 25 Aug 2010)
New Revision: 34887

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ForgotJBossUsernameAction.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/pom.xml
   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/struts/EmailResetJBossPasswordToken.java
   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/plugin/struts.xml
Log:
Added Forgot username feature for nukes accounts and reset password based on nukes e-mail 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/pom.xml	2010-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/pom.xml	2010-08-25 13:21:23 UTC (rev 34887)
@@ -169,15 +169,7 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-  <!--
-    This is where you set the Jive SBS version your plugin is compiled
-    against.
-  -->
-  <properties>
-    <sbs.version>4.0.5</sbs.version>
-  </properties>
 
-
   <reporting>
     <plugins>
       <plugin>

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-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-08-25 13:21:23 UTC (rev 34887)
@@ -109,4 +109,12 @@
    */
   public boolean isSBSAccount(String username, boolean caseInsensitive);
 
+  /**
+   * Check if username is SBS account (by e-mail)
+   * 
+   * @param email
+   * @return true if account with same e-mail exists
+   */
+  public boolean isSBSAccountByEmail(String email);
+
 }

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-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-08-25 13:21:23 UTC (rev 34887)
@@ -234,13 +234,25 @@
 
   @Override
   public boolean isSBSAccount(String username, boolean caseInsensitive) {
-    if (userManager.getUser(new UserTemplate(username), caseInsensitive) != null) {
+    if (username != null && username.trim().length() > 0
+        && userManager.getUser(new UserTemplate(username), caseInsensitive) != null) {
       return true;
     } else {
       return false;
     }
   }
 
+  @Override
+  public boolean isSBSAccountByEmail(String email) {
+    UserTemplate userTemplate = new UserTemplate();
+    userTemplate.setEmail(email);
+    if (email != null && email.trim().length() > 0 && userManager.getUser(userTemplate) != 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/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-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/EmailResetJBossPasswordToken.java	2010-08-25 13:21:23 UTC (rev 34887)
@@ -21,6 +21,8 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth.struts;
 
+import java.util.List;
+
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.jboss.labs.sbs.plugin.nukesauth.EmailResetPasswordAlreadySentException;
@@ -32,6 +34,7 @@
 import com.jivesoftware.community.action.EmailResetPasswordToken;
 import com.jivesoftware.community.action.util.AlwaysAllowAnonymous;
 import com.jivesoftware.community.web.struts.SetReferer;
+import com.jivesoftware.util.StringUtils;
 import com.opensymphony.xwork2.Validateable;
 
 /**
@@ -54,33 +57,55 @@
 
   @Override
   public void validate() {
-    if (getUsername() == null || getUsername().trim().length() < 1) {
-      addActionError(getText("rstpwd.err.mustEntrUsrname.text"));
-      return;
+    if (StringUtils.isEmpty(getUsername()) && StringUtils.isEmpty(getEmailAddress())) {
+      addActionError(getText("rstpwd.err.mstEntrUsrnameOrEmail.text"));
     }
-    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
+
+    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())
+        || sbsAccountManager.isSBSAccountByEmail(getEmailAddress())) {
+      log.debug("Account is SBS Account");
       super.validate();
+      return;
     }
 
-    NukesUser nukesUser = nukesAccountManager.getAccountByUsername(getUsername());
+    NukesUser nukesUser = getNukesUser();
     if (nukesUser == null) {
       // let SBS to handle 'user not found'.
       super.validate();
+      return;
     }
     log.debug("Account is Nukes Account");
   }
 
+  private NukesUser getNukesUser() {
+    // Load the user, either by username or email
+    if (!StringUtils.isEmpty(getUsername())) {
+      log.debug("Reset password based on username");
+      return nukesAccountManager.getAccountByUsername(getUsername());
+    } else {
+      List<NukesUser> nukesUsers = nukesAccountManager.getNukesAccountsByEmail(getEmailAddress());
+      log.debug("Reset password based on e-mail");
+      if (nukesUsers.size() > 0) {
+        return nukesUsers.get(0);
+      }
+    }
+    return null;
+  }
+
   @Override
   public String execute() {
-    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
+    if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())
+        || sbsAccountManager.isSBSAccountByEmail(getEmailAddress())) {
       return super.execute();
     }
     if (!isPasswordResetSupported()) {
       addActionMessage(getText("rstpwd.err.func_disabled.text"));
       return ERROR;
     }
-
-    NukesUser nukesUser = nukesAccountManager.getAccountByUsername(getUsername());
+    NukesUser nukesUser = getNukesUser();
+    if (log.isDebugEnabled()) {
+      log.debug("NukesUser: " + nukesUser);
+    }
     if (nukesUser == null) {
       // let SBS to handle 'user not found'.
       return super.execute();

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ForgotJBossUsernameAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ForgotJBossUsernameAction.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ForgotJBossUsernameAction.java	2010-08-25 13:21:23 UTC (rev 34887)
@@ -0,0 +1,81 @@
+/*
+ * 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 java.util.List;
+
+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.base.UserTemplate;
+import com.jivesoftware.community.action.ForgotUsernameAction;
+import com.jivesoftware.util.StringUtils;
+
+/**
+ * Extension of {@link ForgotUsernameAction} which provides Forgot Nukes Account
+ * use case
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class ForgotJBossUsernameAction extends ForgotUsernameAction {
+
+  private SbsAccountManager sbsAccountManager;
+
+  private NukesAccountManager nukesAccountManager;
+
+  @Override
+  public void validate() {
+    if (StringUtils.isEmpty(getEmailAddress())) {
+      addActionError(getText("frgtusrname.err.mustEntrEmail.text"));
+    } else if (!StringUtils.isValidEmailAddress(getEmailAddress())) {
+      addActionError(getText("frgtusrname.err.invalidEmail.text"));
+    } else {
+      if (sbsAccountManager.isSBSAccountByEmail(getEmailAddress())) {
+        super.validate();
+      } else {
+        List<NukesUser> nukesUsers = nukesAccountManager.getNukesAccountsByEmail(getEmailAddress());
+        if (nukesUsers.size() > 0) {
+
+          NukesUser nukesUser = nukesUsers.get(0);
+          UserTemplate user = new UserTemplate(nukesUser.getUsername());
+          user.setName(nukesUser.getName());
+          user.setEmail(nukesUser.getEmail());
+
+          setUser(user);
+        } else {
+          // let parent to handle 'no user found'
+          super.validate();
+        }
+      }
+    }
+  }
+
+  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/ForgotJBossUsernameAction.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: 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	2010-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ResetJBossPasswordAction.java	2010-08-25 13:21:23 UTC (rev 34887)
@@ -54,7 +54,7 @@
     if (!isPasswordResetSupported()) {
       addActionMessage(getText("rstpwd.err.func_disabled.text"));
       return ERROR;
-    }
+  }
 
     if (sbsAccountManager.isSBSAccount(getUsername(), !isPasswordResetCaseSensitive())) {
       return super.execute();

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-08-25 12:43:54 UTC (rev 34886)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml	2010-08-25 13:21:23 UTC (rev 34887)
@@ -74,6 +74,15 @@
       <result name="success">/template/global/reset-password.ftl</result>
     </action>
 
+    <action name="forgot-jboss-username"
+      class="org.jboss.labs.sbs.plugin.nukesauth.struts.ForgotJBossUsernameAction">
+      <result name="cancel" type="redirect">login!input.jspa</result>
+      <result name="input">/template/global/forgot-username.ftl</result>
+      <result name="success">/template/global/forgot-username.ftl</result>
+      <result name="error">/template/global/forgot-username.ftl</result>
+    </action>
+
+
     <action name="edit-jboss-profile"
       class="org.jboss.labs.sbs.plugin.nukesauth.struts.EditJBossProfile">
       <interceptor-ref name="paramsPrepareParamsStack" />



More information about the jboss-svn-commits mailing list