Eu tenho um filtro que obtem o usuario Logado na sessão, mas preciso fazer uma consulta no banco para saber se esse usuario pertence ao grupo Administradores se ele não for administrador redireciono para um pagina de erro.
O problema é que eu preciso obter um EntityManager dentro do filtro, mas o EntityManager sempre vem null.Eu estou usando o Jboss seam.
public class AdminFilter implements Filter {
@In
EntityManager entityManager;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
RequestDispatcher requestDispatcher = null;
HttpSession session = request.getSession();
// Recupera o usuario adm logado da sessão
Usuario currentUser = (Usuario) session.getAttribute("currentUser");
if (isAdministrador(currentUser) == false) {
requestDispatcher = req.getRequestDispatcher("/unautorizedUser.seam");
} else {
requestDispatcher = req.getRequestDispatcher((request.getRequestURI()));
}
requestDispatcher.forward(req, resp);
}
public void init(FilterConfig arg0) throws ServletException {
}
public boolean isAdministrador(Usuario currenteUser) {
Query query = entityManager.createQuery("select u.grupos from Usuario u where u.id=:id");
query.setParameter("id", currenteUser.getId());
List<Grupo> grupos = query.getResultList();
for (Grupo g : grupos) {
if ((g.getNome().equalsIgnoreCase("ADMINISTRADOR")) && (g.getAtivo() == true))
return true;
}
return false;
}
}
Valeu galera!