[jboss-cvs] jboss-seam/examples/security/src/org/jboss/seam/example/security ...
Shane Bryzak
Shane_Bryzak at symantec.com
Tue Aug 1 21:06:11 EDT 2006
User: sbryzak2
Date: 06/08/01 21:06:11
Modified: examples/security/src/org/jboss/seam/example/security
AuthenticatorAction.java LoginAction.java
LoginLocal.java
Removed: examples/security/src/org/jboss/seam/example/security
LoginModule.java LoginModuleLocal.java
Log:
Fixed logout() method, removed LoginModule
Revision Changes Path
1.3 +35 -7 jboss-seam/examples/security/src/org/jboss/seam/example/security/AuthenticatorAction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: AuthenticatorAction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/security/src/org/jboss/seam/example/security/AuthenticatorAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- AuthenticatorAction.java 1 Aug 2006 02:07:06 -0000 1.2
+++ AuthenticatorAction.java 2 Aug 2006 01:06:11 -0000 1.3
@@ -1,13 +1,14 @@
package org.jboss.seam.example.security;
import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import javax.persistence.NoResultException;
+import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.security.Authentication;
import org.jboss.seam.security.AuthenticationException;
-import org.jboss.seam.security.provider.AuthenticationProvider;
import org.jboss.seam.security.UsernamePasswordToken;
+import org.jboss.seam.security.provider.AuthenticationProvider;
/**
*
@@ -17,15 +18,42 @@
@Name("authenticatorAction")
public class AuthenticatorAction implements AuthenticationProvider
{
- @PersistenceContext EntityManager manager;
+ @In(create=true)
+ private EntityManager entityManager;
public Authentication authenticate(Authentication authentication)
throws AuthenticationException
{
+ try
+ {
+ User user = (User) entityManager.createQuery(
+ "from User where username = :username and password = :password")
+ .setParameter("username", authentication.getPrincipal().toString())
+ .setParameter("password", authentication.getCredentials())
+ .getSingleResult();
+
+ String[] roles = new String[user.getRoles().size()];
+ int idx = 0;
+ for (Role role : user.getRoles())
+ roles[idx++] = role.getRole();
+
UsernamePasswordToken token = new UsernamePasswordToken(
- authentication.getPrincipal(), authentication.getCredentials(),
- new String[] {"user", "admin"});
+ authentication.getPrincipal(), authentication.getCredentials(), roles);
return token;
}
+ catch (NoResultException ex)
+ {
+ throw new AuthenticationException("Invalid username/password");
+ }
+ catch (Exception ex)
+ {
+ throw new AuthenticationException("Unknown authentication error", ex);
+ }
+ }
+
+ public void unauthenticate(Authentication authentication)
+ {
+
+ }
}
1.5 +13 -5 jboss-seam/examples/security/src/org/jboss/seam/example/security/LoginAction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: LoginAction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/security/src/org/jboss/seam/example/security/LoginAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- LoginAction.java 1 Aug 2006 02:07:06 -0000 1.4
+++ LoginAction.java 2 Aug 2006 01:06:11 -0000 1.5
@@ -6,13 +6,15 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.security.Authentication;
import org.jboss.seam.security.AuthenticationException;
import org.jboss.seam.security.UsernamePasswordToken;
import org.jboss.seam.security.authenticator.Authenticator;
/**
- * Authenticates the user against the Realm.
+ * Authenticates the user.
*
* @author Shane Bryzak
*/
@@ -21,14 +23,12 @@
public class LoginAction implements LoginLocal
{
@In(value = "org.jboss.seam.security.Authenticator") Authenticator authenticator;
- @Out(value = "org.jboss.seam.security.Authentication", scope = SESSION) Authentication authentication;
+ @Out(value = "org.jboss.seam.security.Authentication", scope = SESSION, required = false) Authentication authentication;
- @In @Out User user;
+ @In(required = false) @Out(required = false) User user;
public String login()
{
- System.out.println("login() called");
-
authentication = new UsernamePasswordToken(user.getUsername(), user.getPassword());
try
{
@@ -37,7 +37,15 @@
}
catch (AuthenticationException ex)
{
+ FacesMessages.instance().add("Invalid login");
return "login";
}
}
+
+ public String logout()
+ {
+ authentication = null;
+ Contexts.getSessionContext().remove("org.jboss.seam.security.Authentication");
+ return "login";
+ }
}
1.2 +1 -0 jboss-seam/examples/security/src/org/jboss/seam/example/security/LoginLocal.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: LoginLocal.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/security/src/org/jboss/seam/example/security/LoginLocal.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- LoginLocal.java 25 Jul 2006 06:56:16 -0000 1.1
+++ LoginLocal.java 2 Aug 2006 01:06:11 -0000 1.2
@@ -7,4 +7,5 @@
public interface LoginLocal
{
String login();
+ String logout();
}
More information about the jboss-cvs-commits
mailing list