/*
*
* Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute
- Graduate School and Research in Engineering.
* See the file license.txt for copyright permission.
*
*/
package filtro;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import actions.UsuarioActions;
import actions.controle.SessaoDoUsuario;
public class Filtro implements Filter {
public void init(FilterConfig filterConfig) {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
// Recupera a sessao HTTP. Esta classe (HTTPSession) prove meios de identificar um usuario em varias requisicoes
// de paginas realizadas no sistema.
// O responsavel por criar a sessao entre o cliente e o servidor HTTP � o servlet, padrao do sistema
// (no nosso caso, o Faces Servlet).
// Esta Sessao persiste por um tempo limitado por um Timeout e geralmente est� associada a 1 usu�rio que pode
// visitar o site varias vezes.
final HttpServletRequest request = (HttpServletRequest) req;
final HttpSession sessao = request.getSession();
//Recupera o Managed Bean com escopo de SESSAO, 'SessaoDoUsuario'
UsuarioActions usuarioActions = (UsuarioActions)sessao.getAttribute("usuarioActions");
SessaoDoUsuario sessaoDoUsuario = (SessaoDoUsuario)sessao.getAttribute("sessaoDoUsuario");
// Se o ManagedBean ainda est� na Sess�o e o usu�rio � um Usu�rio existente e cadastrado...
if(sessaoDoUsuario != null && sessaoDoUsuario.getUsuarioLogado().getId() != null) {
chain.doFilter(req, res); // ... A filtragem do usuario � realizada com sucesso!
} else {
HttpServletRequest requisicao = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
// Caso contr�rio, o usu�rio � redirecionado para a Tela de Login.
final String URLLogin = "http://" + requisicao.getServerName() + ":" + requisicao.getLocalPort() + "/" + requisicao.getContextPath() + "/login.faces";
response.sendRedirect(response.encodeRedirectURL(URLLogin));
}
}
public void destroy() {
}
}