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
);
}
}