Subversion Repositories bacoAlunos

Rev

Rev 1691 | 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 org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;

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

/**
 *
 * @author  Jorge Machado
 */


public class CertificateAuthenticationFilter 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(CertificateAuthenticationFilter.class);


    public CertificateAuthenticationFilter()
    {
    }

    public void init(FilterConfig config)
    {
    }

    /**
     * @param resp The servlet response we are processing
     * @param req 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 req, ServletResponse resp, FilterChain chain)
            throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException
    {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        1.5.0/docs/api/java/lang/String.html">String certificate = request.getParameter("certificate");
        if(request.getParameter("certificate")!=null)
        {
            try {
                IServiceManager sm = ServiceManager.getInstance();
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{certificate};
                UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"AuthenticateCertificate",args);
                request.setAttribute(Globals.USER_SESSION_KEY,userSession);
                if(userSession.getUser() == null && request.getServletPath().startsWith("/wsjson/api"))
                {
                    response.setHeader("content-type","application/json");
                    AbstractWidgetAjaxController.prepareError(new AccessDeniedException("Erro de autenticaĆ§Ć£o de certificado"),request,response);
                    response.getWriter().write(((JSONObject)request.getAttribute(AbstractWidgetAjaxController.WIDGET_REPONSE_KEY)).toString());
                    return;
                }
            } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) {
                logger.error(e,e);
                try {
                    AbstractWidgetAjaxController.prepareError(e,request,response);
                    response.getWriter().write(((JSONObject)request.getAttribute(AbstractWidgetAjaxController.WIDGET_REPONSE_KEY)).toString());
                } catch (JSONException e1) {
                    logger.fatal(e,e);
                }
                return;
            }

        }
        chain.doFilter(request, response);
    }


    public void destroy()
    {
        // Nothing
    }

    public static void main(1.5.0/docs/api/java/lang/String.html">String[] argsAux) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {
        IServiceManager sm = ServiceManager.getInstance();
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{new 1.5.0/docs/api/java/lang/Long.html">Long(2)};
        1.5.0/docs/api/java/lang/String.html">String certificate = (1.5.0/docs/api/java/lang/String.html">String) sm.execute("12345678","CreateCertificate",args);
        1.5.0/docs/api/java/lang/System.html">System.out.println("certificate = " + certificate);
    }

}