Olá desenvolvedores, neste tutorial implementaremos uma rotina de login e autenticação com o banco de dados. Vimos que nossa implementação sempre redirecionará o usuário para a tela de login se ele já não estiver autenticado no sistema, isto é, se uma sessão não estiver aberta.

FORMULÁRIO DE LOGIN

Assim, é preciso implementar o formulário para podermos de fato testar se a lógica implementada irá realmente funcionar. Desse modo na tela index.html dentro do h:body insira o componente h:panelGrid. O panelGrid é um painel que renderiza elementos HTML, ele foi desenvolvido especialmente para se trabalhar com formulários.

Por default o panelGrid organiza os componentes em uma única coluna, assim precisaremos informar que os queremos organizados em duas colunas.

<h:panelGrid columns:”2”> </panelGrid>

A estrutura padrão do h:panelGrid para o formulário que estamos criando será de dois componentes h:outputLabel e um campo h:inpuText para o login, um campo h:inpuSecret para a senha e um componente h:commandButton.

Se você quiser centralizar o formulário, dentro do componente h:form insira uma estilização inline.

<h:form id=“formLogin” style=”margin-top:22%; margin-left:40%”>

O h:commandButtn implementará ação de submeter o formulário de login para o método logar(), implementado na classe PessoaBean.

<h:commandButton value=”Acessar” action=”#{pessoaBean.Logar}” />

Do mesmo modo será preciso atribuir um valor aos componentes de login e senha do objeto.

<h:inputText value=”#{pessoaBean.logar}” />
<h:inputSecret value="#{pessoaBean.senha}" />

MÉTODO LOGAR

Na classe PessoaBean crie o método logar(). E entenda, quando o usuário logar no sistema ele precisará ser redirecionado para algum lugar, tendo a autenticação sido validada ou não. Dessa forma, o método deverá retornar uma String, por padrão, o método retornará para a página index.jsf.

IMPLEMENTANDO O DAO

O DAO – Data Access Object é a classe responsável pelas operações com o banco de dados, como criar, recuperar, atualizar e deletar objetos da base de dados. Dessa forma fornecendo uma interface a partir da qual as outras camadas da aplicação poderão se comunicar com a base de dados.

Assim, na raiz do src/main/java crie um pacote “br.com.repository”,e dentro do pacote crie a Interface “IDaoPessoa”. E ainda dentro do pacote crie a classe “IDaoPessoaImpl” que implementa a Interface IDaoPessoa.

Na Interface IDaoPessoa, teremos um método consultarUsuario() que inicializa uma pessoa como null. O método que como parâmetro recebe login e senha do usuário deverá retornar um objeto Pessoa.

E assim precisaremos obter o “EntityManager”, iniciar uma transação “commitar” e encerrá-la. Dentro do método trabalharemos o acesso a base de dados.

Porém, antes de “commitar” os dados e a sessão ser encerrada o objeto pessoa deverá ser consultado na base de dados.

pessoa = entityManager.createQuery(“select p from Pessoa p Where p.login ‘” +login+ “’ and p.senha = ‘” +senha+ “’”).getSingleResult();

CONCLUINDO A IMPLEMENTAÇÃO

Volte a classe PessoaBean para instanciar a Interface IDaoPessoa, para termos a injeção de dependência.

private IDaoPessoa iDaoPessoa = new IDaoPessoa();

No método logar() teremos que atribuir a um objeto do tipo pessoa a consulta que será realizada na base de dados. E ainda, se o objeto pessoa não estiver nulo, a autenticação estará validada e o usuário terá acesso ao sistema sendo redirecionado para a primeirapagina.jsf

No momento em que o redirecionamento vai ser realizado, o fluxo de processamento é direcionado para o filtro de autenticação, onde o usuarioLogado já deverá estar “setado”. Dessa forma o redirecionamento para a página desejada será possibilitado. Tudo isso após a efetivação do registro do usuário ser validado na base de dados.

Desse modo, para obter alguma informação do ambiente do JSF é preciso declarar o FacesContext. O FacesContext contém todas as informações de estado por solicitação relacionadas ao processamento de uma única solicitação JavaServer Faces e a renderização da resposta correspondente.

Declararemos ainda o ExternalContext que é uma classe que permite que aplicativos baseados em JavaServer Faces sejam executados em um ambiente Servlet. E por fim adicionaremos a variável usuarioLogado os dados obtidos de pessoaUser.

EM POUCAS PALAVRAS

Este tutorial trouxe muitas etapas de implementação, então sugiro que reveja a aula quantas vezes forem necessárias. Refaça a implementação, “quebre” em partes para facilitar o entendimento, não avance com dúvidas. E caso precise de ajuda, se você for aluno do Formação Java Web, poderá por meio da plataforma contatar a equipe de suporte.