From 4362922ba00a22d9177df1731673b5fb4db03fb5 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Thu, 19 Dec 2013 17:58:11 +0000
Subject: [PATCH] #333 feature - Added first page with Bootstrap
---
securis/src/main/java/net/curisit/securis/MainApp.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/MainApp.java b/securis/src/main/java/net/curisit/securis/MainApp.java
index 0cfe9b7..b8ae3b1 100644
--- a/securis/src/main/java/net/curisit/securis/MainApp.java
+++ b/securis/src/main/java/net/curisit/securis/MainApp.java
@@ -4,16 +4,22 @@
import javax.inject.Inject;
import javax.inject.Named;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
import net.curisit.securis.ioc.RequestsModule;
import net.curisit.securis.ioc.SecurisModule;
import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
+import org.jboss.resteasy.util.HttpResponseCodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,13 +59,25 @@
context.setContextPath("/");
context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
- ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
context.setInitParameter("resteasy.role.based.security", "true");
+ context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null);
- // context.addServlet(DefaultServlet.class, "/*");
- context.addServlet(sh, "/*");
+ ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
+ // context.addServlet(DefaultServlet.class, "/*");
+ context.addServlet(sh, "/");
+ ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
+ context.setErrorHandler(errorHandler);
+ errorHandler.addErrorPage(HttpResponseCodes.SC_FORBIDDEN, "/login");
+ errorHandler.addErrorPage(HttpResponseCodes.SC_NOT_FOUND, "/");
+ errorHandler.addErrorPage(javax.ws.rs.NotFoundException.class, "/");
+ errorHandler.addErrorPage(javax.ws.rs.ForbiddenException.class, "/");
+ errorHandler.addErrorPage(javax.ws.rs.ForbiddenException.class.getCanonicalName(), "/");
+ errorHandler.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE, "/");
+
+ log.info("Error Handlers: " + context.getErrorHandler());
server.setHandler(context);
+
server.start();
server.join();
// rc.packages("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");
@@ -68,4 +86,39 @@
}
+ /**
+ * User: Nuwan.N.Bandara
+ */
+ @Provider
+ public static class DefaultExceptionHandler implements ExceptionMapper<Exception> {
+
+ public DefaultExceptionHandler() {
+ log.info("Creating DefaultExceptionHandler ");
+ }
+
+ @Override
+ public Response toResponse(Exception e) {
+ // For simplicity I am preparing error xml by hand.
+ // Ideally we should create an ErrorResponse class to hold the error info.
+ StringBuilder response = new StringBuilder("<response>");
+ response.append("<status>ERROR</status>");
+ response.append("<message>" + e.getMessage() + "</message>");
+ response.append("</response>");
+ return Response.serverError().entity(response.toString()).type(MediaType.APPLICATION_XML).build();
+ }
+ }
+
}
+
+/*
+ * Constraint constraint = new Constraint(); constraint.setName(Constraint.__FORM_AUTH);; constraint.setRoles(new String[]{"user","admin","moderator"}); constraint.setAuthenticate(true);
+ *
+ * ConstraintMapping constraintMapping = new ConstraintMapping(); constraintMapping.setConstraint(constraint); constraintMapping.setPathSpec("/*");
+ *
+ * ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); securityHandler.addConstraintMapping(constraintMapping); HashLoginService loginService = new HashLoginService(); loginService.putUser("username", new
+ * Password("password"), new String[] {"user"}); securityHandler.setLoginService(loginService);
+ *
+ * FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false); securityHandler.setAuthenticator(authenticator);
+ *
+ * context.setSecurityHandler(securityHandler);
+ */
\ No newline at end of file
--
Gitblit v1.3.2