Subversion Repositories bacoAlunos

Rev

Rev 1814 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.filters;

import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.web.UserSessionProxy;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *
 * @author  Jorge Machado
 */


public class UserFilter implements 1.5.0/docs/api/java/util/logging/Filter.html">Filter {

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(UserFilter.class);


    public UserFilter()
    {
    }

    public void init(FilterConfig config)
    {

    }

    /**
     *
     * @param request The servlet request we are processing
     * @param chain The filter chain we are processing
     *
     * @exception java.io.IOException if an input/output error occurs
     * @exception javax.servlet.ServletException if a servlet error occurs
     */

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException
    {
        HttpServletRequest hrequest = (HttpServletRequest) request;
        if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie())
            chain.doFilter(request,response);

        UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(hrequest);

        if(userSession != null && userSession.getUser() != null)
            chain.doFilter(request,response);
        else if(userSession == null)
        {
             logger.info("User lost Session");
        }
        else
        {
            try{


            // ((HttpServletResponse)response).setStatus(401);
             ((HttpServletResponse)response).sendError(401);
            }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error("Error don't sending error, probably already sent: " + e);
            }
        }
    }


    public void destroy()
    {
        // Nothing
    }

}