[jboss-svn-commits] JBL Code SVN: r33373 - in labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main: java/org/jboss/labs/sbs/plugin/nukesauth and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jun 7 10:12:13 EDT 2010
Author: lkrzyzanek
Date: 2010-06-07 10:12:12 -0400 (Mon, 07 Jun 2010)
New Revision: 33373
Added:
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/aspect/
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/aspect/EmailValidationAspect.java
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ChooseMasterAccountAction.java
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account-success.ftl
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account.ftl
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/resources/
labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/resources/plugin_i18n.properties
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/filter/NukesSyncFilter.java
Log:
ORG-606: Added form to choose a master account.
Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/aspect/EmailValidationAspect.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/aspect/EmailValidationAspect.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/aspect/EmailValidationAspect.java 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,64 @@
+/*
+ * 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.aspect;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+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.dao.NukesUser;
+import org.springframework.aop.MethodBeforeAdvice;
+
+import com.jivesoftware.base.EmailAlreadyExistsException;
+
+/**
+ *
+ *
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class EmailValidationAspect implements MethodBeforeAdvice {
+
+ private static final Logger log = LogManager.getLogger(EmailValidationAspect.class);
+
+ private NukesAccountManager nukesAccountManager;
+
+ @Override
+ public void before(Method method, Object[] args, Object target) throws Throwable {
+ log.info("before, method: " + method.getName() + " args: " + args);
+
+ }
+
+ public void checkNukesEmail(com.jivesoftware.base.User user) throws EmailAlreadyExistsException {
+ log.info("checkNukesEmail, user: " + user);
+ List<NukesUser> nukes = nukesAccountManager.getNukesAccountsByEmail(user.getEmail());
+ if (nukes.size() > 0) {
+ throw new EmailAlreadyExistsException("E-mail is used in Nukes Database");
+ }
+ }
+
+ 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/aspect/EmailValidationAspect.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/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-07 10:07:12 UTC (rev 33372)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java 2010-06-07 14:12:12 UTC (rev 33373)
@@ -26,6 +26,7 @@
import java.util.List;
import java.util.Map;
+import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
/**
@@ -50,7 +51,11 @@
@Override
public NukesUser getNukesUser(String username) {
- return getSimpleJdbcTemplate().queryForObject(SELECT_USER_BY_USERNAME, new NukesUserMapper(), username);
+ try {
+ return getSimpleJdbcTemplate().queryForObject(SELECT_USER_BY_USERNAME, new NukesUserMapper(), username);
+ } catch (EmptyResultDataAccessException e) {
+ return null;
+ }
}
@Override
Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java 2010-06-07 10:07:12 UTC (rev 33372)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java 2010-06-07 14:12:12 UTC (rev 33373)
@@ -37,6 +37,7 @@
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 org.jboss.labs.sbs.plugin.nukesauth.struts.ChooseMasterAccountAction;
import com.jivesoftware.base.User;
import com.jivesoftware.base.UserManager;
@@ -58,6 +59,8 @@
private UserManager userManager;
+ public static final String CHOOSE_MASTER_ACCOUNT_URL = "/account/choose-master-account.jspa";
+
@Override
public void afterPropertiesSet() throws Exception {
// do nothing - this is only sync filter - it doesn't do login.
@@ -142,10 +145,14 @@
NukesUser nukesUser = nukesAccountManager.getAccountByUsername(username);
List<NukesUser> dupliciteAccounts = nukesAccountManager.getNukesAccountsByEmail(nukesUser.getEmail());
- // TODO: Check in production DB if we don't have SBS accounts without Nukes account
+ // TODO: Check in production DB if we don't have SBS accounts without
+ // Nukes account
if (dupliciteAccounts.size() > 1) {
log.info("No SBS account, duplicate nukes accounts");
- // TODO: Handle No SBS account and duplicate Nukes accounts.
+ httpRequest.getSession().setAttribute(ChooseMasterAccountAction.USERNAME_KEY, username);
+ httpRequest.getSession().setAttribute(ChooseMasterAccountAction.PASSWORD_KEY, password);
+ sendRedirect(httpRequest, httpResponse, CHOOSE_MASTER_ACCOUNT_URL);
+ return;
} else {
log.info("No SBS account and one nukes account. Going to create SBS account");
sbsAccountManager.createAccount(nukesUser, password);
Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ChooseMasterAccountAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ChooseMasterAccountAction.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ChooseMasterAccountAction.java 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,137 @@
+/*
+ * 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.acegisecurity.BadCredentialsException;
+import org.acegisecurity.userdetails.UsernameNotFoundException;
+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.EmailAlreadyExistsException;
+import com.jivesoftware.base.UserAlreadyExistsException;
+import com.jivesoftware.community.action.JiveActionException;
+import com.jivesoftware.community.action.JiveActionSupport;
+import com.opensymphony.xwork2.validator.annotations.Validation;
+
+/**
+ *
+ *
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+ at Validation()
+public class ChooseMasterAccountAction extends JiveActionSupport {
+
+ public static final String USERNAME_KEY = "username";
+
+ public static final String PASSWORD_KEY = "password";
+
+ private Object username;
+
+ private Object password;
+
+ private List<NukesUser> duplicateAccounts;
+
+ private String masterAccountUsername;
+
+ private NukesAccountManager nukesAccountManager;
+
+ private SbsAccountManager sbsAccountManager;
+
+ public boolean authenticate() {
+ username = getRequest().getSession().getAttribute(USERNAME_KEY);
+ password = getRequest().getSession().getAttribute(PASSWORD_KEY);
+ if (username == null && password == null) {
+ return false;
+ }
+
+ try {
+ nukesAccountManager.authenticateNukesUser(username.toString(), password.toString());
+ } catch (UsernameNotFoundException e) {
+ return false;
+ } catch (BadCredentialsException e) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String input() {
+ if (!authenticate()) {
+ return UNAUTHORIZED;
+ }
+ NukesUser user = nukesAccountManager.getAccountByUsername(username.toString());
+
+ duplicateAccounts = nukesAccountManager.getNukesAccountsByEmail(user.getEmail());
+
+ return INPUT;
+ }
+
+ @Override
+ public String execute() {
+ if (!authenticate()) {
+ return UNAUTHORIZED;
+ }
+ final NukesUser masterAccount = nukesAccountManager.getAccountByUsername(masterAccountUsername);
+
+ try {
+ sbsAccountManager.createAccount(masterAccount, password.toString());
+ } catch (UserAlreadyExistsException e) {
+ // should not occur because we're creating not existing SBS account
+ throw new JiveActionException(e);
+ } catch (EmailAlreadyExistsException e) {
+ // should not occur because we're creating not existing SBS account
+ throw new JiveActionException(e);
+ }
+ getRequest().getSession().removeAttribute(USERNAME_KEY);
+ getRequest().getSession().removeAttribute(PASSWORD_KEY);
+
+ return SUCCESS;
+ }
+
+ public List<NukesUser> getDuplicateAccounts() {
+ return duplicateAccounts;
+ }
+
+ public void setDuplicateAccounts(List<NukesUser> duplicateAccounts) {
+ this.duplicateAccounts = duplicateAccounts;
+ }
+
+ public String getMasterAccountUsername() {
+ return masterAccountUsername;
+ }
+
+ public void setMasterAccountUsername(String masterAccountUsername) {
+ this.masterAccountUsername = masterAccountUsername;
+ }
+
+ public void setNukesAccountManager(NukesAccountManager nukesAccountManager) {
+ this.nukesAccountManager = nukesAccountManager;
+ }
+
+ public void setSbsAccountManager(SbsAccountManager sbsAccountManager) {
+ this.sbsAccountManager = sbsAccountManager;
+ }
+
+}
Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/struts/ChooseMasterAccountAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account-success.ftl
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account-success.ftl (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account-success.ftl 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <#assign title=action.getText('plugin.nukesauth.masteraccount.name.created') />
+ <title>${title}</title>
+</head>
+<body class="jive-body-formpage">
+
+<!-- BEGIN header & intro -->
+<div id="jive-body-intro">
+ <div id="jive-body-intro-content">
+ <h1>${title}</h1>
+ </div>
+</div>
+<!-- END header & intro -->
+<!-- BEGIN main body -->
+<div id="jive-body-main">
+
+ <!-- BEGIN main body column -->
+ <div id="jive-body-maincol-container">
+ <div id="jive-body-maincol">
+
+ <p><@s.text name="plugin.nukesauth.masteraccount.name.created.description" /></p>
+ <p><a href="/login.jspa"><@s.text name="plugin.nukesauth.masteraccount.name.created.loginlink" /></a></p>
+
+ </div>
+ </div>
+ <!-- END main body column -->
+
+
+</div>
+<!-- END main body -->
+</body>
+</html>
Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account.ftl
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account.ftl (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/resources/templates/choose-master-account.ftl 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,65 @@
+<html>
+ <head>
+ <#assign title=action.getText('plugin.nukesauth.masteraccount.name') />
+ <title>${title}</title>
+ </head>
+ <body class="jive-body-formpage">
+
+<!-- BEGIN header & intro -->
+<div id="jive-body-intro">
+ <div id="jive-body-intro-content">
+ <h1>${title}</h1>
+ </div>
+</div>
+<!-- END header & intro -->
+<!-- BEGIN main body -->
+<div id="jive-body-main">
+
+ <!-- BEGIN main body column -->
+ <div id="jive-body-maincol-container">
+ <div id="jive-body-maincol">
+
+ <#include "/template/global/include/form-message.ftl" />
+
+ <p><@s.text name="plugin.nukesauth.masteraccount.description" /></p>
+ <p> </p>
+ <table cellspacing="2px" cellpadding="2px" border="1px solid gray">
+ <tr>
+ <td><@s.text name="plugin.nukesauth.masteraccount.account.username" />:</td>
+ <@s.iterator value="duplicateAccounts">
+ <td><@s.property value="username" /></td>
+ </@s.iterator>
+ </tr>
+ <tr>
+ <td><@s.text name="plugin.nukesauth.masteraccount.account.firstname" />:</td>
+ <@s.iterator value="duplicateAccounts">
+ <td><@s.property value="firstname" default="-" /></td>
+ </@s.iterator>
+ </tr>
+ <tr>
+ <td><@s.text name="plugin.nukesauth.masteraccount.account.lastname" />:</td>
+ <@s.iterator value="duplicateAccounts">
+ <td><@s.property value="lastname" default="-" /></td>
+ </@s.iterator>
+ </tr>
+ </table>
+ <p> </p>
+ <table>
+ <@s.form theme="simple">
+ <@s.radio key="plugin.nukesauth.masteraccount.choosemaster" name="masterAccountUsername" list="duplicateAccounts" listKey="username" listValue="username" theme="xhtml"/>
+ <tr><td> </td></tr>
+ <tr><td>
+ <@s.submit key="plugin.nukesauth.masteraccount.submit" method="execute"/>
+ <@s.submit key="plugin.nukesauth.masteraccount.cancel" method="cancel"/>
+ </td></tr>
+ </@s.form>
+ </table>
+ </div>
+ </div>
+ <!-- END main body column -->
+
+
+</div>
+<!-- END main body -->
+ </body>
+</html>
Added: 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 (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,22 @@
+<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/struts-2.0.dtd">
+<struts>
+ <package name="nukes-authentication-actions" namespace="/account"
+ extends="community-actions">
+
+ <action name="choose-master-account"
+ class="org.jboss.labs.sbs.plugin.nukesauth.struts.ChooseMasterAccountAction"
+ method="input">
+ <result name="input" type="freemarker">
+ /plugins/nukesauthentication/resources/templates/choose-master-account.ftl
+ </result>
+ <result name="success" type="freemarker">
+ /plugins/nukesauthentication/resources/templates/choose-master-account-success.ftl
+ </result>
+ <interceptor-ref name="paramsPrepareParamsStack" />
+ </action>
+
+ </package>
+
+
+</struts>
Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/struts.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/resources/plugin_i18n.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/resources/plugin_i18n.properties (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/resources/plugin_i18n.properties 2010-06-07 14:12:12 UTC (rev 33373)
@@ -0,0 +1,14 @@
+# Choose Master Account
+plugin.nukesauth.masteraccount.name=Choose a Master Account
+plugin.nukesauth.masteraccount.description=Description
+plugin.nukesauth.masteraccount.account.username=Username
+plugin.nukesauth.masteraccount.account.firstname=First name
+plugin.nukesauth.masteraccount.account.lastname=Last name
+
+plugin.nukesauth.masteraccount.choosemaster=Choose a Master Account
+plugin.nukesauth.masteraccount.submit=Create The Master Account
+plugin.nukesauth.masteraccount.cancel=Cancel
+
+plugin.nukesauth.masteraccount.name.created=Master account created
+plugin.nukesauth.masteraccount.name.created.description=Account has been successfuly created. Now you can login.
+plugin.nukesauth.masteraccount.name.created.loginlink=Go to login page
Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/resources/plugin_i18n.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
More information about the jboss-svn-commits
mailing list