package com.jboss.dvd.seam; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceException; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Out; import org.jboss.seam.bpm.Actor; import org.jboss.seam.security.Identity; @Stateless @Name("authenticator") public class AuthenticatorAction implements Authenticator { @In private EntityManager entityManager; @In Actor actor; @In Identity identity; @Out(required=false, scope=ScopeType.SESSION) User currentUser; public boolean authenticate() { try { currentUser = (User) entityManager.createQuery("select u from User u where u.userName = #{identity.username} and u.password = #{identity.password}") .getSingleResult(); } catch (PersistenceException e) { return false; } actor.setId(identity.getUsername()); if (currentUser instanceof Admin) { actor.getGroupActorIds().add("shippers"); actor.getGroupActorIds().add("reviewers"); identity.addRole("admin"); } return true; } }