Seguem os dois.
Login Controller
package br.unemat.digera.controllers;
import javax.inject.Inject;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.validator.SimpleMessage;
import br.com.caelum.vraptor.validator.Validator;
import br.unemat.digera.dao.UsuarioDao;
import br.unemat.digera.modelos.Usuario;
import br.unemat.digera.seguranca.Open;
import br.unemat.digera.seguranca.UsuarioLogado;
@Controller
public class LoginController {
private UsuarioDao usuarioDao;
private UsuarioLogado usuarioLogado;
private Result result;
private Validator validator;
public LoginController(){}
@Inject
public LoginController(UsuarioDao usuarioDao, UsuarioLogado usuarioLogado,
Result result, Validator validator){
this.usuarioDao = usuarioDao;
this.usuarioLogado = usuarioLogado;
this.result = result;
this.validator = validator;
}
@Open
public void form(){}
@Open
public void autentica(String login, String senha){
System.out.printf("login: ", login);
System.out.printf("senha: ", senha);
Usuario usuario = usuarioDao.busca(login, senha);
if(usuario != null){
usuarioLogado.fazLogin(usuario);
result.redirectTo(UsuarioController.class).lista();
}else{
validator.add(new SimpleMessage("login_invalido",
"Login ou senha incorretos"));
validator.onErrorRedirectTo(this).form();
}
}
@Open
public void desloga(){
usuarioLogado.desloga();
result.redirectTo(this).form();
}
}
Usuario Dao
package br.unemat.digera.dao;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import br.unemat.digera.modelos.Usuario;
@RequestScoped
public class UsuarioDao {
private EntityManager manager;
@Inject
public UsuarioDao(EntityManager manager){
this.manager = manager;
}
public UsuarioDao(){}
public void adiciona(Usuario usuario){
manager.getTransaction().begin();
manager.persist(usuario);
manager.getTransaction().commit();
}
public List<Usuario> lista(){
TypedQuery<Usuario> query = manager.createQuery("select u from Usuario u", Usuario.class);
return query.getResultList();
}
public Usuario busca(String login, String senha) {
TypedQuery<Usuario> query = manager.createQuery("select u from Usuario u where u.login = :login and u.senha = :senha", Usuario.class);
query.setParameter("login", login);
query.setParameter("senha", senha);
try{
return query.getSingleResult();
}catch(NoResultException e){
e.printStackTrace();
return null;
}
}
}
E verifiquei o meu println e eles estão como nulos.