[jboss-svn-commits] JBL Code SVN: r18693 - labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 5 06:08:00 EST 2008
Author: adamw
Date: 2008-03-05 06:08:00 -0500 (Wed, 05 Mar 2008)
New Revision: 18693
Added:
labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/NukesConnector.java
labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/UserInfo.java
Modified:
labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java
Log:
Login fix
Modified: labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java 2008-03-05 10:23:16 UTC (rev 18692)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java 2008-03-05 11:08:00 UTC (rev 18693)
@@ -23,9 +23,6 @@
import java.security.Principal;
import java.security.acl.Group;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -37,7 +34,6 @@
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
-import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import org.jboss.forge.common.ForgeHelper;
@@ -63,6 +59,7 @@
*
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
* @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
public class LabsLoginModule extends UsernamePasswordLoginModule {
@@ -72,8 +69,6 @@
protected String havingRole;
- protected String jbossDB;
-
private static final String PASS_TOKEN = "AutoLoginToken.";
private static final String TOKENIZER = "<!AutoLoginTokenizer!>";
@@ -85,6 +80,8 @@
private UserProfileModule userProfileModule;
private MembershipModule membershipModule;
+ private NukesConnector nukesConnector;
+
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
super.initialize(subject, callbackHandler, sharedState, options);
@@ -93,7 +90,7 @@
userModuleJNDIName = (String) options.get("userModuleJNDIName");
additionalRole = (String) options.get("additionalRole");
havingRole = (String) options.get("havingRole");
- jbossDB = (String) options.get("jbossdb");
+ String jbossDB = (String) options.get("jbossdb");
try {
userModule = (UserModule) new InitialContext().lookup("java:portal/UserModule");
@@ -109,6 +106,8 @@
log.trace("additionalRole = " + additionalRole);
log.trace("havingRole = " + havingRole);
log.trace("jbossdb = " + jbossDB);
+
+ nukesConnector = new NukesConnector(jbossDB);
}
protected boolean validatePassword(String inputPassword,
@@ -205,37 +204,22 @@
}
private String checkIfPasswordChanged(User user) throws LoginException {
- String password = null;
+ String password;
- if (!getUsername().equals("admin")) {
+ if (!"admin".equals(getUsername())) {
/*
* check if password in the main db changed (not for admin account)
*/
try {
- DataSource ds = (DataSource) new InitialContext()
- .lookup(jbossDB);
+ password = nukesConnector.checkIfUserPasswordChanged(getUsername());
- Connection conn = ds.getConnection();
-
- Statement st = conn.createStatement();
-
- String sql = "SELECT * FROM nuke_users WHERE pn_uname='"
- + getUsername() + "';";
-
- ResultSet rs = st.executeQuery(sql);
-
- if (rs.next()) {
- if (!user.validatePassword(rs.getString("pn_pass"))) {
- /*
- * User user = userModule
- * .findUserByUserName(getUsername());
- */
- user.updatePassword(rs.getString("pn_pass"));
- }
- password = rs.getString("pn_pass");
+ if (!user.validatePassword(password)) {
+ /*
+ * User user = userModule
+ * .findUserByUserName(getUsername());
+ */
+ user.updatePassword(password);
}
-
- conn.close();
} catch (Exception e) {
log.error("Couldn't connect to nukes database", e);
throw new LoginException(e.toString());
@@ -260,61 +244,39 @@
* and user
*/
- DataSource ds = (DataSource) new InitialContext().lookup(jbossDB);
+ try {
+ // System.out.println("Taking pass for user " +
+ // getUsername());
- Connection conn = ds.getConnection();
+ UserInfo userInfo = nukesConnector.lookForNewUser(log, getUsername());
- Statement st = conn.createStatement();
+ if (userInfo == null) {
+ return null;
+ }
- log.debug("Looking for the user " + getUsername()
- + " in the JBoss Database");
+ User user = userModule.createUser(getUsername(), userInfo.getPass());
+ userProfileModule.setProperty(user, User.INFO_USER_EMAIL_REAL, userInfo.getEmail());
+ userProfileModule.setProperty(user, User.INFO_USER_EMAIL_FAKE, userInfo.getFemail());
+ userProfileModule.setProperty(user, User.INFO_USER_NAME_GIVEN, userInfo.getFname());
+ userProfileModule.setProperty(user, User.INFO_USER_NAME_FAMILY, userInfo.getLname());
+ userProfileModule.setProperty(user, User.INFO_USER_ENABLED, true);
- String sql = "SELECT * FROM nuke_users WHERE pn_uname='"
- + getUsername() + "';";
+ log.info("User " + getUsername() + " added to Labs Database.");
- ResultSet rs = st.executeQuery(sql);
-
- User user = null;
-
- if (rs.next()) {
- log.debug("User " + getUsername()
- + " found in the JBoss Database.");
- try {
- // System.out.println("Taking pass for user " +
- // getUsername());
-
- user = userModule.createUser(getUsername(), rs
- .getString("pn_pass"));
- userProfileModule.setProperty(user, User.INFO_USER_EMAIL_REAL, rs.getString("pn_email"));
- userProfileModule.setProperty(user, User.INFO_USER_EMAIL_FAKE, rs.getString("pn_femail"));
- userProfileModule.setProperty(user, User.INFO_USER_NAME_GIVEN, rs.getString("pn_fname"));
- userProfileModule.setProperty(user, User.INFO_USER_NAME_FAMILY, rs.getString("pn_lname"));
- userProfileModule.setProperty(user, User.INFO_USER_ENABLED, true);
-
- log.info("User " + getUsername()
- + " added to Labs Database.");
-
- // Add the user to the default
- // user role
- String defaultRole = "User";// getPortletConfig().getInitParameter(UserPortletConstants.DEFAULT_ROLE);
- if (defaultRole != null) {
- Set roleSet = new HashSet();
- Role role = roleModule.findRoleByName(defaultRole);
- if (role != null) {
- roleSet.add(role);
- membershipModule.assignRoles(user, roleSet);
- } else {
- log
- .error("The role you specified as default role does not exist, check your portlet configuration");
- }
+ // Add the user to the default
+ // user role
+ String defaultRole = "User";// getPortletConfig().getInitParameter(UserPortletConstants.DEFAULT_ROLE);
+ if (defaultRole != null) {
+ Set roleSet = new HashSet();
+ Role role = roleModule.findRoleByName(defaultRole);
+ if (role != null) {
+ roleSet.add(role);
+ membershipModule.assignRoles(user, roleSet);
} else {
- log
- .info("You didn't specify a default role in the portlet init configuration, please refer to the documentation");
+ log.error("The role you specified as default role does not exist, check your portlet configuration");
}
- } catch (IllegalArgumentException e) {
- log.error("Cannot create user " + getUsername(), e);
-
- throw new LoginException(e.toString());
+ } else {
+ log.info("You didn't specify a default role in the portlet init configuration, please refer to the documentation");
}
if (user != null
@@ -324,16 +286,15 @@
* User has been just created and it's only in the defaule
* role.
*/
- password = rs.getString("pn_pass");
+ password = userInfo.getPass();
} else {
return null;
}
+ } catch (IllegalArgumentException e) {
+ log.error("Cannot create user " + getUsername(), e);
- } else {
- log.info("User " + getUsername()
- + " couldn't been found in the JBoss Database.");
+ throw new LoginException(e.toString());
}
- conn.close();
} catch (Exception e) {
log.error("Couldn't connect to nukes database", e);
throw new LoginException(e.toString());
Added: labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/NukesConnector.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/NukesConnector.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/NukesConnector.java 2008-03-05 11:08:00 UTC (rev 18693)
@@ -0,0 +1,102 @@
+package org.jboss.labs.login;
+
+import org.jboss.logging.Logger;
+import org.jboss.portal.common.transaction.Transactions;
+
+import javax.sql.DataSource;
+import javax.naming.InitialContext;
+import javax.transaction.TransactionManager;
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.ResultSet;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class NukesConnector {
+ private String jbossDB;
+
+ public NukesConnector(String jbossDB) {
+ this.jbossDB = jbossDB;
+ }
+
+ public String checkIfUserPasswordChanged(final String username) throws Exception {
+ final TransactionManager tm = (TransactionManager) new InitialContext()
+ .lookup("java:/TransactionManager");
+
+ return (String) Transactions.requiresNew(tm,
+ new Transactions.Runnable() {
+ public Object run() throws Exception {
+ return checkIfUserPasswordChangedInternal(username);
+ }
+ });
+ }
+
+ public UserInfo lookForNewUser(final Logger log, final String username) throws Exception {
+ final TransactionManager tm = (TransactionManager) new InitialContext()
+ .lookup("java:/TransactionManager");
+
+ return (UserInfo) Transactions.requiresNew(tm,
+ new Transactions.Runnable() {
+ public Object run() throws Exception {
+ return lookForNewUserInternal(log, username);
+ }
+ });
+ }
+
+ public String checkIfUserPasswordChangedInternal(String username) throws Exception {
+ DataSource ds = (DataSource) new InitialContext()
+ .lookup(jbossDB);
+
+ Connection conn = ds.getConnection();
+
+ Statement st = conn.createStatement();
+
+ String sql = "SELECT * FROM nuke_users WHERE pn_uname='"
+ + username + "';";
+
+ ResultSet rs = st.executeQuery(sql);
+
+ String password = null;
+ if (rs.next()) {
+ password = rs.getString("pn_pass");
+ }
+
+ conn.close();
+
+ return password;
+ }
+
+ public UserInfo lookForNewUserInternal(Logger log, String username) throws Exception {
+ DataSource ds = (DataSource) new InitialContext().lookup(jbossDB);
+
+ Connection conn = ds.getConnection();
+
+ Statement st = conn.createStatement();
+
+ log.debug("Looking for the user " + username
+ + " in the JBoss Database");
+
+ String sql = "SELECT * FROM nuke_users WHERE pn_uname='"
+ + username + "';";
+
+ ResultSet rs = st.executeQuery(sql);
+
+ UserInfo userInfo = null;
+ if (rs.next()) {
+ log.debug("User " + username + " found in the JBoss Database.");
+ // System.out.println("Taking pass for user " +
+ // getUsername());
+
+ userInfo = new UserInfo(rs.getString("pn_pass"), rs.getString("pn_email"),
+ rs.getString("pn_femail"), rs.getString("pn_fname"), rs.getString("pn_lname"));
+
+ } else {
+ log.info("User " + username
+ + " couldn't been found in the JBoss Database.");
+ }
+ conn.close();
+
+ return userInfo;
+ }
+}
Added: labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/UserInfo.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/UserInfo.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/UserInfo.java 2008-03-05 11:08:00 UTC (rev 18693)
@@ -0,0 +1,40 @@
+package org.jboss.labs.login;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class UserInfo {
+ private String pass;
+ private String email;
+ private String femail;
+ private String fname;
+ private String lname;
+
+ public UserInfo(String pass, String email, String femail, String fname, String lname) {
+ this.pass = pass;
+ this.email = email;
+ this.femail = femail;
+ this.fname = fname;
+ this.lname = lname;
+ }
+
+ public String getPass() {
+ return pass;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public String getFemail() {
+ return femail;
+ }
+
+ public String getFname() {
+ return fname;
+ }
+
+ public String getLname() {
+ return lname;
+ }
+}
More information about the jboss-svn-commits
mailing list