[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