Gestión de excepciones en el filtro de autorización.
This commit is contained in:
@@ -4,6 +4,7 @@ package managedbean.common;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import javax.faces.application.FacesMessage;
|
import javax.faces.application.FacesMessage;
|
||||||
|
import javax.persistence.PersistenceException;
|
||||||
import javax.servlet.Filter;
|
import javax.servlet.Filter;
|
||||||
import javax.servlet.FilterChain;
|
import javax.servlet.FilterChain;
|
||||||
import javax.servlet.FilterConfig;
|
import javax.servlet.FilterConfig;
|
||||||
@@ -15,7 +16,10 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.omnifaces.util.Exceptions;
|
||||||
|
|
||||||
import common.UserType;
|
import common.UserType;
|
||||||
|
import common.Utils;
|
||||||
|
|
||||||
@WebFilter(filterName = "AuthFilter", urlPatterns = { "*.xhtml" })
|
@WebFilter(filterName = "AuthFilter", urlPatterns = { "*.xhtml" })
|
||||||
public class AuthorizationFilter implements Filter {
|
public class AuthorizationFilter implements Filter {
|
||||||
@@ -41,13 +45,14 @@ public class AuthorizationFilter implements Filter {
|
|||||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||||
HttpServletRequest req = null;
|
HttpServletRequest req = null;
|
||||||
HttpServletResponse resp = null;
|
HttpServletResponse resp = null;
|
||||||
|
HttpSession ses = null;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
req = (HttpServletRequest) request;
|
req = (HttpServletRequest) request;
|
||||||
String reqURI = req.getRequestURI();
|
String reqURI = req.getRequestURI();
|
||||||
|
|
||||||
resp = (HttpServletResponse) response;
|
resp = (HttpServletResponse) response;
|
||||||
HttpSession ses = req.getSession(false);
|
ses = req.getSession(false);
|
||||||
|
|
||||||
// Para recursos publicos permitimos el acceso exista sesión o no.
|
// 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
|
if (reqURI.indexOf("/login.xhtml") >= 0 || reqURI.indexOf("/profile/RegisterUser.xhtml") >= 0 || reqURI.indexOf("/home.xhtml") >= 0
|
||||||
@@ -156,7 +161,13 @@ public class AuthorizationFilter implements Filter {
|
|||||||
|
|
||||||
resp.sendRedirect(req.getContextPath() + "/home.xhtml");
|
resp.sendRedirect(req.getContextPath() + "/home.xhtml");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
resp.sendRedirect(req.getContextPath() + "/error.xhtml");
|
if (Exceptions.is(e, PersistenceException.class) == true) {
|
||||||
|
if (ses != null)
|
||||||
|
SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, "Error al intentar acceder a la base de datos", Utils.getExceptionRootCause(e).getLocalizedMessage());
|
||||||
|
|
||||||
|
resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=sql");
|
||||||
|
} else
|
||||||
|
resp.sendRedirect(req.getContextPath() + "/error.xhtml");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user