From 1bfd7317e6d7285cad65aac0a9925a1238d99781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Sun, 15 Dec 2019 14:10:09 +0100 Subject: [PATCH] =?UTF-8?q?Implementaci=C3=B3n=20de=20mensajes=20de=20erro?= =?UTF-8?q?r=20que=20se=20muestran=20en=20la=20pagina=20de=20error.=20El?= =?UTF-8?q?=20mensaje=20de=20error=20se=20env=C3=ADa=20a=20trav=C3=A9s=20d?= =?UTF-8?q?e=20la=20sesi=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.sources/MyHealth/docroot/error.xhtml | 19 +++++++---- .../common/AuthorizationFilter.java | 4 ++- .../managedbean/common/ManagedBeanBase.java | 10 +++++- .../src/managedbean/common/SessionUtils.java | 32 ++++++++++++++++--- .../src/managedbean/common/homeMBean.java | 9 +++++- 5 files changed, 60 insertions(+), 14 deletions(-) diff --git a/1.sources/MyHealth/docroot/error.xhtml b/1.sources/MyHealth/docroot/error.xhtml index 374adb2..e961f1d 100644 --- a/1.sources/MyHealth/docroot/error.xhtml +++ b/1.sources/MyHealth/docroot/error.xhtml @@ -10,22 +10,29 @@
- + + + + +
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.
-
Descripción del error
+
+ + +
- +
-
-
+
+
-
+
diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index 95c971b..945a532 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Dictionary; import java.util.List; +import javax.faces.application.FacesMessage; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -129,7 +130,8 @@ public class AuthorizationFilter implements Filter { chain.doFilter(request, response); return; } else { - resp.sendRedirect(req.getContextPath() + "/error.xhtml"); + 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; } diff --git a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java index c9d4fb7..1e742e3 100644 --- a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java +++ b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java @@ -105,7 +105,15 @@ public class ManagedBeanBase { } protected void addFacesMessage(FacesContext context, FacesMessage.Severity severity, String summary, String detail) { - context.addMessage(null, new FacesMessage(severity, summary, detail)); + this.addFacesMessage(context, new FacesMessage(severity, summary, detail)); + } + + protected void addFacesMessage(FacesMessage facesMsg) { + this.addFacesMessage(FacesContext.getCurrentInstance(), facesMsg); + } + + protected void addFacesMessage(FacesContext context, FacesMessage facesMsg) { + context.addMessage(null, facesMsg); } protected void manageException(Exception ex) { diff --git a/1.sources/MyHealth/src/managedbean/common/SessionUtils.java b/1.sources/MyHealth/src/managedbean/common/SessionUtils.java index 2b3bb97..0aa178f 100644 --- a/1.sources/MyHealth/src/managedbean/common/SessionUtils.java +++ b/1.sources/MyHealth/src/managedbean/common/SessionUtils.java @@ -1,6 +1,7 @@ package managedbean.common; +import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; @@ -14,6 +15,7 @@ public class SessionUtils { public static final String SESSION_VAR_USERID = "userId"; public static final String SESSION_VAR_USERTYPE = "userType"; public static final String SESSION_VAR_USER = "loggedOnUser"; + public static final String SESSION_VAR_MESSAGE = "facesMessage"; public static HttpSession getSession() { FacesContext ctx = FacesContext.getCurrentInstance(); @@ -47,7 +49,7 @@ public class SessionUtils { public static boolean isLogedIn() { return isLogedIn(getSession()); } - + public static boolean isLogedIn(HttpSession session) { if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USERID) != null) return true; @@ -73,15 +75,15 @@ public class SessionUtils { public static UserType getUserType() { return getUserType(getSession()); - } - + } + public static UserType getUserType(HttpSession session) { if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USERTYPE) != null) return UserType.class.cast(session.getAttribute(SessionUtils.SESSION_VAR_USERTYPE)); else return null; - } - + } + public static LoggedUserTO getloggedOnUser() { HttpSession session = getSession(); if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USER) != null) @@ -89,4 +91,24 @@ public class SessionUtils { else return null; } + + public static FacesMessage getMessage() { + HttpSession session = getSession(); + if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_MESSAGE) != null) { + FacesMessage msg = FacesMessage.class.cast(session.getAttribute(SessionUtils.SESSION_VAR_MESSAGE)); + session.removeAttribute(SessionUtils.SESSION_VAR_MESSAGE); + return msg; + } else + return null; + } + + public static void addMessage(FacesMessage.Severity severity, String summary, String detail) { + addMessage(getSession(), severity, summary, detail); + } + + public static void addMessage(HttpSession session, FacesMessage.Severity severity, String summary, String detail) { + if (session != null) + session.setAttribute(SessionUtils.SESSION_VAR_MESSAGE, new FacesMessage(severity, summary, detail)); + } + } diff --git a/1.sources/MyHealth/src/managedbean/common/homeMBean.java b/1.sources/MyHealth/src/managedbean/common/homeMBean.java index 4d1dcdc..9e3edcc 100644 --- a/1.sources/MyHealth/src/managedbean/common/homeMBean.java +++ b/1.sources/MyHealth/src/managedbean/common/homeMBean.java @@ -5,6 +5,7 @@ import java.util.List; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; +import javax.faces.application.FacesMessage; import javax.inject.Named; import common.UserType; @@ -16,7 +17,7 @@ import common.UserType; */ @Named("home") @RequestScoped -public class homeMBean implements Serializable { +public class homeMBean extends ManagedBeanBase implements Serializable { private static final long serialVersionUID = 1L; private boolean isLogedIn; @@ -31,6 +32,12 @@ public class homeMBean implements Serializable { userName = SessionUtils.getUserName(); userId = SessionUtils.getUserId(); userType = SessionUtils.getUserType(); + + FacesMessage message = SessionUtils.getMessage(); + + if (message != null) { + this.addFacesMessage(message); + } } public List getThemes() {