[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>&nbsp;</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>&nbsp;</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>&nbsp;</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