package com.processpuzzle.application.security.control;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.processpuzzle.application.domain.Application;
import com.processpuzzle.user.session.control.HttpSessionUserSessionHolder;
import com.processpuzzle.user_session.domain.UserRequestContext;
import com.processpuzzle.user_session.domain.UserRequestManager;
import com.processpuzzle.user_session.domain.UserSession;
import com.processpuzzle.user_session.domain.UserSessionKeys;
public class AuthenticationFilter implements Filter {
private FilterConfig config;
public static final String USER_KEY = "userSession";
public void init(FilterConfig filterConfig ) throws ServletException {
config = filterConfig;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
boolean forward = true;
authenticateUserWithSingleSignOn();
authenticateUserWithCookie();
// UserRequestContext requestContext = createNewRequestContext( (HttpServletRequest) request );
// UserSession userSession = requestContext.getUserSession();
//
// if( checkIfUserIsAnonym( userSession ) ) {
// String action = request.getParameter("action");
// if (action != null && !action.equals("Login")) {
// forward = false;
// httpRequest.getRequestDispatcher("/FrontController/AuthenticationError.jsp").forward( httpRequest, httpResponse );
// }
// }
if( forward ) {
chain.doFilter(httpRequest, httpResponse);
}
}
public void destroy() {
config = null;
}
public FilterConfig getConfig() {
return config;
}
//Private helper methods
private void authenticateUserWithSingleSignOn() {
}
private void authenticateUserWithCookie() {
}
@SuppressWarnings("unused")
private UserRequestContext createNewRequestContext( HttpServletRequest httpServletRequest, Application application ){
HttpSessionUserSessionHolder sessionHolder = new HttpSessionUserSessionHolder( httpServletRequest );
UserRequestContext requestContext = UserRequestManager.getInstance().createRequestContext( sessionHolder );
return requestContext;
}
@SuppressWarnings("unused")
private boolean checkIfUserIsAnonym( UserSession userSession ) {
if( userSession.getAttribute( UserSessionKeys.userName ) == null ) return true;
else return false;
}
}