package org.fenixedu.bennu.portal.servlet; import java.io.IOException; 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.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.fenixedu.bennu.core.security.Authenticate; import org.fenixedu.bennu.portal.BennuPortalConfiguration; import com.google.common.base.Strings; /** * Specialized filter that logs the current user out. * * If CAS is enabled, the user is redirected to the CAS logout page, after * being logged out locally. * * If CAS is not enabled, the user is redirected to the application's root. * * @author João Carvalho (joao.pedro.carvalho@tecnico.ulisboa.pt) * */ @WebFilter({ "/logout", "/logout/" }) public class PortalLogoutFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; // Logout locally Authenticate.logout(req, resp); if (Strings.isNullOrEmpty(BennuPortalConfiguration.getConfiguration().logoutURL())) { resp.sendRedirect(req.getContextPath() + "/"); } else { resp.sendRedirect(BennuPortalConfiguration.getConfiguration().logoutURL()); } } @Override public void destroy() { } }