[jboss-cvs] jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace ...
Shane Bryzak
Shane_Bryzak at symantec.com
Mon Oct 30 21:54:36 EST 2006
User: sbryzak2
Date: 06/10/30 21:54:36
Modified: examples/seamspace/src/org/jboss/seam/example/seamspace
Member.java
Added: examples/seamspace/src/org/jboss/seam/example/seamspace
AuthenticatorAction.java LoginAction.java
LoginLocal.java Role.java
Log:
login stuff for security demo
Revision Changes Path
1.3 +20 -3 jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/Member.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Member.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/Member.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- Member.java 31 Oct 2006 00:45:17 -0000 1.2
+++ Member.java 31 Oct 2006 02:54:36 -0000 1.3
@@ -1,15 +1,18 @@
package org.jboss.seam.example.seamspace;
import java.io.Serializable;
+import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.DefinePermissions;
import org.jboss.seam.annotations.AclProvider;
+import org.jboss.seam.annotations.DefinePermissions;
+import org.jboss.seam.annotations.Name;
/**
- * A user account
+ * A member account
*
* @author Shane Bryzak
*/
@@ -25,6 +28,8 @@
private String username;
private String password;
+ private Set<Role> roles;
+
@Id
public Integer getMemberId()
{
@@ -55,4 +60,16 @@
{
this.password = password;
}
+
+ @ManyToMany
+ @JoinTable(name = "MemberRoles")
+ public Set<Role> getRoles()
+ {
+ return roles;
+ }
+
+ public void setRoles(Set<Role> roles)
+ {
+ this.roles = roles;
+ }
}
1.1 date: 2006/10/31 02:54:36; author: sbryzak2; state: Exp;jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/AuthenticatorAction.java
Index: AuthenticatorAction.java
===================================================================
package org.jboss.seam.example.seamspace;
import javax.persistence.EntityManager;
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.UsernamePasswordToken;
import org.jboss.seam.security.provider.AuthenticationProvider;
/**
* Authenticates the member against the database
*
* @author Shane Bryzak
*/
@Name("authenticatorAction")
public class AuthenticatorAction implements AuthenticationProvider
{
@In(create=true)
private EntityManager entityManager;
public Authentication authenticate(Authentication authentication)
throws AuthenticationException
{
try
{
Member member = (Member) entityManager.createQuery(
"from Member where username = :username and password = :password")
.setParameter("username", authentication.getPrincipal().toString())
.setParameter("password", authentication.getCredentials())
.getSingleResult();
String[] roles = new String[member.getRoles().size()];
int idx = 0;
for (Role role : member.getRoles())
roles[idx++] = role.getName();
return new UsernamePasswordToken(authentication.getPrincipal(),
authentication.getCredentials(), roles);
}
catch (NoResultException ex)
{
throw new AuthenticationException("Invalid username/password");
}
catch (Exception ex)
{
throw new AuthenticationException("Unknown authentication error", ex);
}
}
}
1.1 date: 2006/10/31 02:54:36; author: sbryzak2; state: Exp;jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/LoginAction.java
Index: LoginAction.java
===================================================================
package org.jboss.seam.example.seamspace;
import javax.ejb.Stateless;
import org.jboss.seam.Seam;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.security.AuthenticationException;
import org.jboss.seam.security.authenticator.Authenticator;
/**
* Login action
*
* @author Shane Bryzak
*/
@Stateless
@Name("loginAction")
public class LoginAction implements LoginLocal
{
@In(required = false) @Out(required = false) Member member;
public String login()
{
try
{
Authenticator.instance().authenticate(member.getUsername(), member.getPassword());
return "success";
}
catch (AuthenticationException ex)
{
FacesMessages.instance().add("Invalid login");
return "login";
}
}
public String logout()
{
Authenticator.instance().unauthenticateSession();
Seam.invalidateSession();
return "login";
}
}
1.1 date: 2006/10/31 02:54:36; author: sbryzak2; state: Exp;jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/LoginLocal.java
Index: LoginLocal.java
===================================================================
package org.jboss.seam.example.seamspace;
import javax.ejb.Local;
/**
* Local interface for loginAction
*
* @author Shane Bryzak
*/
@Local
public interface LoginLocal
{
String login();
String logout();
}
1.1 date: 2006/10/31 02:54:36; author: sbryzak2; state: Exp;jboss-seam/examples/seamspace/src/org/jboss/seam/example/seamspace/Role.java
Index: Role.java
===================================================================
package org.jboss.seam.example.seamspace;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.jboss.seam.annotations.Name;
/**
* Represents a security role.
*
* @author Shane Bryzak
*/
@Entity
@Name("role")
public class Role implements Serializable
{
private Integer roleId;
private String name;
@Id
public Integer getRoleId()
{
return roleId;
}
public void setRoleId(Integer roleId)
{
this.roleId = roleId;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
More information about the jboss-cvs-commits
mailing list