package gov.samhsa.consent2share.web;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.GenericFilterBean;
public class AjaxTimeoutRedirectFilter extends GenericFilterBean {
// Custom HTTP error code to return for session timeout with Ajax-based
// request.
private int customSessionExpiredErrorCode;
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (req.getSession().getAttribute("SPRING_SECURITY_CONTEXT") == null) {
if (req.getHeader("x-requested-with") != null
&& req.getHeader("x-requested-with").equalsIgnoreCase(
"XMLHttpRequest")) {
res.setStatus(this.customSessionExpiredErrorCode);
} else {
chain.doFilter(req, res);
}
} else {
chain.doFilter(req, res);
}
}
public int getCustomSessionExpiredErrorCode() {
return customSessionExpiredErrorCode;
}
public void setCustomSessionExpiredErrorCode(
int customSessionExpiredErrorCode) {
this.customSessionExpiredErrorCode = customSessionExpiredErrorCode;
}
}