Import inicial do projeto.
[simdecs_seam.git] / SimDeCS / src / hot / org / ufcspa / simdecs / session / Authenticator.java
diff --git a/SimDeCS/src/hot/org/ufcspa/simdecs/session/Authenticator.java b/SimDeCS/src/hot/org/ufcspa/simdecs/session/Authenticator.java
new file mode 100644 (file)
index 0000000..22c4c79
--- /dev/null
@@ -0,0 +1,57 @@
+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;
+    }
+
+}