package auth.filter; import java.io.IOException; 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 persistency.entities.LoggedUser; import persistency.exposed.LoggedUserExposed; import auth.UserPrincipalRequestWrapper; public class AuthenticatedUserFilter extends AbstractFilter { public void init(FilterConfig cfg) throws ServletException { } public void doFilter(ServletRequest req, ServletResponse response, FilterChain next) throws IOException, ServletException { super.doFilter(req, response, next); HttpServletRequest request = (HttpServletRequest) req; String user = null; LoggedUserExposed lue = new LoggedUserExposed(); LoggedUser currentUser = lue.getCurrentUser(request); if(currentUser != null && !currentUser.isSessionExpired()){ user = currentUser.getId()+""; } // pass the request along the filter chain if(HttpServletRequest.class.isInstance(request)){ if(!((HttpServletRequest) request).getMethod().equals("GET")) { if(user == null || currentUser.isSessionExpired()){ ((HttpServletResponse)response).sendError(HttpServletResponse.SC_UNAUTHORIZED, "This operation requires login"); return; } } } next.doFilter(new UserPrincipalRequestWrapper(user, getRolesForUser(user), request), response); } public void destroy() { } }