[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