Subversion Repositories bacoAlunos

Rev

Rev 1306 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.filters;

import org.apache.log4j.Logger;

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

import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;

/**
 *
 * @author  Jorge Machado
 */


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

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


    public AdminFilter()
    {
    }

    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) request.getAttribute(Globals.USER_SESSION_KEY);
        if(userSession.getUser() != null && ((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE))
            chain.doFilter(request,response);
        else
        {
            ((HttpServletResponse)response).sendError(401);
        }
    }


    public void destroy()
    {
        // Nothing
    }

}