--- /dev/null
+package org.ufcspa.simdecs.session;
+
+import java.util.Iterator;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.log.Log;
+import org.jboss.seam.security.Credentials;
+import org.jboss.seam.security.Identity;
+import org.ufcspa.simdecs.entities.Regra;
+import org.ufcspa.simdecs.entities.Usuario;
+
+@Name("authenticator")
+public class Authenticator
+{
+ @Logger private Log log;
+
+ @In Identity identity;
+ @In Credentials credentials;
+
+ @In
+ private EntityManager entityManager;
+
+ public boolean authenticate()
+ {
+log.info("entrou no metodo autenticate");
+ Usuario usuario;
+ try {
+ usuario= (Usuario) entityManager.createQuery("select usu from Usuario as usu where usu.login=:login and usu.senha=:senha")
+ .setParameter("login", credentials.getUsername())
+ .setParameter("senha", credentials.getPassword())
+ .getSingleResult();
+ } catch (NoResultException ne) {
+ log.info("Não encontrou usuário");
+ return false;
+ }
+
+log.info("usuario nao é nulo");
+
+ Iterator rolesIt = entityManager.createQuery("Select reg From Regra as reg inner join reg.grupos gru inner join gru.usuarios usu where usu.id=:idUsuario")
+ .setParameter("idUsuario", usuario.getId())
+ .getResultList()
+ .iterator();
+
+ while(rolesIt.hasNext())
+ identity.addRole(((Regra) rolesIt.next()).getToken());
+
+ log.info("authenticating {0}", credentials.getUsername());
+
+ return true;
+ }
+
+}