Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Liberando mais paginas no Autorizado

No exercício proposto pelo curso, a classe Autorizador libera apenas a index.xhtml para usuários não logados. Como eu posso liberar outras paginas ?

Código Autorizador:

public class Autorizador implements PhaseListener {

    private static final long serialVersionUID = 1L;

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext context = event.getFacesContext();
        String nomePagina = context.getViewRoot().getViewId();

        System.out.println(nomePagina);

        if ("/login.xhtml".equals(nomePagina)) { 
            return;
        }

        Pessoa usuarioLogado = (Pessoa) context.getExternalContext()
                .getSessionMap().get("usuarioLogado");

        if(usuarioLogado != null) {
            return;
        }

        NavigationHandler handler = context.getApplication().getNavigationHandler();
        handler.handleNavigation(context, null, "/login?faces-redirect=true");

        context.renderResponse();   
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
}
2 respostas
solução!

Oi Rafael,

na verdade o Autorizador liberar a página livro.xhtml:

 if ("/login.xhtml".equals(nomePagina)) { 
            return;
 }

Para liberar mais páginas basta adicionar mais uma condição no if:

if ("/login.xhtml".equals(nomePagina) || "/outraPagina.xhtml".equals(nomePagina)) { 
     return;
}

abs

Muito obrigado, E que eu gosto de sempre de evoluir os exercícios propostos