Olá desenvolvedores, neste tutorial aprenderemos com o “rendered” a mostrar e ocultar componentes da tela de acordo com o perfil do usuário, isto é, de acordo com os privilégios que cada tipo de perfil poderá ter.

No momento em que a validação do usuário é realizada na classe FilterAutenticacao, o elemento que estamos passando é o usuário do objeto pessoa. Seguindo com o fluxo de processamento a autenticação é validada ou não no método logar(). Se a autenticação for validada o que ficará armazenado na sessão é o login do usuário.

Nesse sentido, para que determinados recursos sejam bloqueados para este usuário e liberado para outro, o que precisa ficar armazenado em sessão é o perfil completo do usuário. E pra isso temos, na classe da Entidade Pessoa o atributo perfilUsuario. O que iremos fazer é passar todo o objeto e não apenas o login para ser adicionado na variável usuarioLogado, dentro do método logar() da classe PessoaBean.

Do mesmo modo procederemos no FilterAutenticacao, onde, dentro do doFilter(), o usuarioLogado não vai ser passado para uma String, mas para o objeto.

Pessoa usuarioLogado = (Pessoa) session.getAttribute(“usuarioLogado”);

E por estarmos trabalhando com o objeto inteiro, dentro da implementação da condição que redireciona o usuário para determinada página de acordo com a resposta da requisição, poderemos remover a validação de String.

Feito isso, agora todos os dados do usuário serão passados, e não apenas o login. Voltando a primeirapagina.xhtml, note que todos os componentes possuem uma propriedade sinalizadora que indica se o componente deve ou não ser renderizado. Esta propriedade é o “rendered” que por default tem o valor true.

Faça um teste atribuindo ao componente h:dataTable o valor “false” para a propriedade “rendered”. Atualize o projeto, acesse a página e observe que a tabela não será mais exibida.

MÉTODO PERMITEACESSO()

Para esta implementação será necessário um método que retorne um boolean, isto é, true ou false. Como parâmetro o método receberá qual perfil de acesso será permitido. Assim, iremos recuperar o usuarioLogado, e dessa forma se o perfil for liberado o componente será mostrado na tela.

Em nossa aplicação estabelecemos três perfis, o de administrador, secretario e recepcionista. Desse modo, poderemos liberar o acesso somente para o perfil ou perfis desejados, chamando o método permiteAcesso() no componente que desejamos esconder para um dado usuário, e passaremos como argumento os usuários cujo acesso será permitido.

Veja o exemplo, somente quem for administrador terá autorização para visualizar o campo para excluir registros da tabela. Assim, na coluna do botão excluir, o “rendered” chamará o método permiteAcesso().

<h:column rendered=”#{pessoaBean.permiteAcesso(‘ADMINISTRADOR’)} ></h:column>

EM POUCAS PALAVRAS

Observe que com o “rendered” ocultar e mostrar componentes se torna uma implementação bem simples, que não requer o uso de frameworks. Além de ser muito usada na implementação de aplicações, das mais simples até as mais complexas. Assim podemos mostrar ou ocultar algum componente de acordo com o perfil do usuário.