package org.surfnet.oaaas.cas;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by bourges on 05/08/14.
*/
public class PostCasAuthenticationFilter implements Filter {
public static String POST_CAS_AUTHENTICATION_INFO = "casUser";
public static String REDIRECT_URL = "redirectURL";
private List<String> admins = new ArrayList<String>();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String adminList = filterConfig.getInitParameter("admins");
if (adminList != null) {
admins = Arrays.asList(adminList.split(","));
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
CasUser casUser = new CasUser();
String uid = httpServletRequest.getRemoteUser();
casUser.setUid(uid);
if (admins.contains(uid)) {
casUser.setAdmin(true);
}
httpServletRequest.getSession().setAttribute(POST_CAS_AUTHENTICATION_INFO, casUser);
String uri = (String) httpServletRequest.getSession().getAttribute(REDIRECT_URL);
httpResponse.sendRedirect(uri);
}
@Override
public void destroy() {
}
public void setAdmins(List<String> admins) {
this.admins = admins;
}
}