1
I have a very simple system of Registration and Login, I made a validation in both fields.
I want to adapt this validation to something more specific like:
- Login does not exist
- Password invalidates
Currently my validation has a single return: "Invalid login or password"
Loginmanagedbean:
package br.com.arena.controller;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import br.com.arena.dao.PessoaDAO;
import br.com.arena.model.Pessoa;
@ManagedBean(name = "LoginMB")
@ViewScoped
public class LoginManagedBean {
private PessoaDAO pessoaDAO = new PessoaDAO();
private Pessoa pessoa = new Pessoa();
public String envia() {
pessoa = pessoaDAO.getPessoa(pessoa.getNomeUsuario(), pessoa.getSenhaUsuario());
if (pessoa == null) {
pessoa = new Pessoa();
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Login ou senha invalidos",
"Erro no Login!"));
return null;
} else {
return "/main";
}
}
public PessoaDAO getPessoaDAO() {
return pessoaDAO;
}
public void setPessoaDAO(PessoaDAO pessoaDAO) {
this.pessoaDAO = pessoaDAO;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
}
Personal:
package br.com.arena.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import br.com.arena.model.Pessoa;
import br.com.arena.util.JPAUtil;
public class PessoaDAO {
private EntityManager em;
public PessoaDAO() {
setEm(JPAUtil.getEntityManager());
}
public void cadastrar(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().persist(pessoa);
getEm().getTransaction().commit();
}
public void atualizar(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().merge(pessoa);
getEm().getTransaction().commit();
}
public List<Pessoa> listaTodasPessoas(){
Query q = em.createQuery("select p from Pessoa p");
List<Pessoa> pessoas = q.getResultList();
return pessoas;
}
public Pessoa getPessoa(String nomeUsuario, String senhaUsuario) {
try {
Pessoa pessoa = (Pessoa) em
.createQuery(
"SELECT u from Pessoa u where u.nomeUsuario = :name and u.senhaUsuario = :senha")
.setParameter("name", nomeUsuario)
.setParameter("senha", senhaUsuario).getSingleResult();
return pessoa;
} catch (NoResultException e) {
return null;
}
}
public void removerPessoa(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().find(Pessoa.class, pessoa.getId());
getEm().remove(pessoa);
getEm().getTransaction().commit();
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
}
Login.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Arena</title>
</h:head>
<h:body>
<h1>Login</h1>
<h:form>
<p:messages id="messages" />
<p:panelGrid columns="2">
<p:outputLabel for="nomeUsuario" value="Nome Usuário:" />
<p:inputText id="nomeUsuario" value="#{LoginMB.pessoa.nomeUsuario}" />
<p:outputLabel for="senha" value="Senha:" />
<p:password id="senha" value="#{LoginMB.pessoa.senhaUsuario}" />
<p:commandButton value="Enviar" icon="ui-icon-star" action="#{LoginMB.envia}" ajax="false">
</p:commandButton>
</p:panelGrid>
</h:form>
</h:body>
</html>