diff --git a/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml b/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml index 1e39fd3..55b8d0b 100644 --- a/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml +++ b/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml @@ -2,4 +2,10 @@ + + + + + org.omnifaces.exceptionhandler.FacesMessageExceptionHandlerFactory + diff --git a/1.sources/MyHealth/docroot/WEB-INF/web.xml b/1.sources/MyHealth/docroot/WEB-INF/web.xml index f3dd3be..5b5b57c 100644 --- a/1.sources/MyHealth/docroot/WEB-INF/web.xml +++ b/1.sources/MyHealth/docroot/WEB-INF/web.xml @@ -18,7 +18,10 @@ javax.faces.FACELETS_SKIP_COMMENTS true - + + javax.faces.STATE_SAVING_METHOD + client + javax.faces.DEFAULT_SUFFIX .xhtml @@ -59,14 +62,29 @@ *.xhtml + + javax.faces.application.ViewExpiredException + /error.xhtml?type=expired + + + java.sql.SQLException + /error.xhtml?type=sql + + + java.lang.RuntimeException + /error.xhtml?type=runtime + 500 /error.xhtml + + 401 + /error.xhtml?type=expired + - 30 - + 1 diff --git a/1.sources/MyHealth/docroot/error.xhtml b/1.sources/MyHealth/docroot/error.xhtml index e961f1d..54b3c37 100644 --- a/1.sources/MyHealth/docroot/error.xhtml +++ b/1.sources/MyHealth/docroot/error.xhtml @@ -13,14 +13,17 @@ +
-
La acción que estaba realizando a causado un error inesperado en el sistema. A continuación podrá ver un descripción detallada del error para que - pueda comunicarlo al equipo de soporte.
+
+ +
- +
diff --git a/1.sources/MyHealth/docroot/header.xhtml b/1.sources/MyHealth/docroot/header.xhtml index 8d6f740..37a8dc5 100644 --- a/1.sources/MyHealth/docroot/header.xhtml +++ b/1.sources/MyHealth/docroot/header.xhtml @@ -27,9 +27,9 @@ } +
-

@@ -39,9 +39,7 @@ - - - + Se ha producido un error! diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index 945a532..22d3742 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -2,11 +2,9 @@ package managedbean.common; import java.io.IOException; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.List; import javax.faces.application.FacesMessage; +import javax.faces.application.ViewExpiredException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -18,9 +16,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.primefaces.model.menu.DefaultSeparator; -import org.primefaces.model.menu.DefaultSubMenu; - import common.UserType; @WebFilter(filterName = "AuthFilter", urlPatterns = { "*.xhtml" }) @@ -39,20 +34,30 @@ public class AuthorizationFilter implements Filter { try { HttpServletRequest req = (HttpServletRequest) request; + String reqURI = req.getRequestURI(); + HttpServletResponse resp = (HttpServletResponse) response; HttpSession ses = req.getSession(false); - String reqURI = req.getRequestURI(); - - // Para recursos publicos permitimos el acceso + // Para recursos publicos permitimos el acceso exista sesión o no. if (reqURI.indexOf("/login.xhtml") >= 0 || reqURI.indexOf("/profile/RegisterUser.xhtml") >= 0 || reqURI.indexOf("/home.xhtml") >= 0 || reqURI.indexOf("/error.xhtml") >= 0 || reqURI.indexOf("/public/") >= 0 || reqURI.contains("javax.faces.resource")) { chain.doFilter(request, response); return; } - // Si el usuario está logeado comprobamos si está autorizado a ver la página - // solicitada. + // Sesión expirada + if (req.isRequestedSessionIdValid() == false && req.getRequestedSessionId() != null) { + chain.doFilter(request, response); + return; + //throw new ViewExpiredException("Session expired!", "error"); + //resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + //SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, "Su sesión ha caducado", "Su sesión ha caducado, por favor inicie sesión de nuevo."); + //resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=expired"); + //return; + } + + // Si el usuario está logeado comprobamos si está autorizado a ver la página solicitada. if (SessionUtils.isLogedIn(ses) == true) { UserType tipoUsuario = SessionUtils.getUserType(ses); boolean authorized = false; @@ -130,7 +135,9 @@ public class AuthorizationFilter implements Filter { chain.doFilter(request, response); return; } else { - SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, "No está autorizado a acceder a la página solicitada. Por favor, utilice el menú principal de la aplicación.", String.format("Se ha producido una expción de autorización, su usuario no está autorizado a acceder a la página: (%s).", reqURI)); + SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, + "No está autorizado a acceder a la página solicitada. Por favor, utilice el menú principal de la aplicación.", + String.format("Se ha producido una expción de autorización, su usuario no está autorizado a acceder a la página: (%s).", reqURI)); resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=auth"); return; }