From de70fa1e8ca7da4ada373a15de12df23dfdc7106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Mon, 23 Dec 2019 19:44:05 +0100 Subject: [PATCH] =?UTF-8?q?Implementaci=C3=B3n=20de=20login=20autom=C3=A1t?= =?UTF-8?q?ico=20para=20agilizar=20el=20desarollo.=20Es=20necesario=20modi?= =?UTF-8?q?ficar=20el=20c=C3=B3digo=20del=20AuthorizationFilter=20para=20e?= =?UTF-8?q?stablecer=20el=20usuario=20y=20contrase=C3=B1a=20que=20se=20qui?= =?UTF-8?q?ere=20utilizar.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Este código debe eliminarse al finalizar el desarrollo. --- .../common/AuthorizationFilter.java | 20 ++++++++++++++++ .../src/managedbean/common/SessionUtils.java | 10 ++++++-- .../managedbean/systemAdmin/LoginMBean.java | 23 +++++++++++++++++-- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index 946fff9..87e3714 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -20,6 +20,7 @@ import org.omnifaces.util.Exceptions; import common.UserType; import common.Utils; +import managedbean.systemAdmin.LoginMBean; @WebFilter(filterName = "AuthFilter", urlPatterns = { "*.xhtml" }) public class AuthorizationFilter implements Filter { @@ -46,12 +47,31 @@ public class AuthorizationFilter implements Filter { HttpServletRequest req = null; HttpServletResponse resp = null; HttpSession ses = null; + + // Si establecemos esta variable a true se realiza el autologin + // TODO: Eliminar esta variable al terminar el desarrollo + boolean Debug = false; try { req = (HttpServletRequest) request; String reqURI = req.getRequestURI(); resp = (HttpServletResponse) response; + + //TODO: Eliminar este código al terminar el desarrollo. + //Realizamos un login automatico (para agilizar el desarrollo. + if (Debug == true) { + ses = req.getSession(true); + + if (SessionUtils.isLogedIn(ses) == false) { + LoginMBean login = new LoginMBean(); + login.setUsername("PRO#100"); + login.setPassword("asdf"); + boolean result = login.autoLogin(ses); + + } + + } ses = req.getSession(false); // Para recursos publicos permitimos el acceso exista sesión o no. diff --git a/1.sources/MyHealth/src/managedbean/common/SessionUtils.java b/1.sources/MyHealth/src/managedbean/common/SessionUtils.java index 9c3a4c1..14345f0 100644 --- a/1.sources/MyHealth/src/managedbean/common/SessionUtils.java +++ b/1.sources/MyHealth/src/managedbean/common/SessionUtils.java @@ -38,12 +38,18 @@ public class SessionUtils { } public static void createOrUpdateSession(LoggedUserTO usr) { - HttpSession ses = getSession(true); + createOrUpdateSession(getSession(true), usr); + } + + public static void createOrUpdateSession(HttpSession ses, LoggedUserTO usr) { + if (ses == null) + return; + ses.setAttribute(SessionUtils.SESSION_VAR_USERNAME, usr.getName()); ses.setAttribute(SessionUtils.SESSION_VAR_USERID, usr.getId()); ses.setAttribute(SessionUtils.SESSION_VAR_USERTYPE, usr.getUserType()); ses.setAttribute(SessionUtils.SESSION_VAR_USER, usr); - } + } public static void DestroySession() { HttpSession ses = getSession(); diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java index 06a7f01..5618439 100644 --- a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java @@ -3,6 +3,7 @@ package managedbean.systemAdmin; import javax.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; import javax.inject.Named; +import javax.servlet.http.HttpSession; import org.primefaces.PrimeFaces; @@ -50,17 +51,35 @@ public class LoginMBean extends ManagedBeanBase { this.addFacesMessageKeep(FacesMessage.SEVERITY_INFO, "Login correcto", "Bienvenido " + usr.getName()); viewRedirect = "/home?faces-redirect=true"; } else - this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "El usuario o la contraseña son incorrectos"); + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "El usuario o la contraseña son incorrectos"); } catch (Exception ex) { this.addFacesMessage(FacesMessage.SEVERITY_FATAL, "Error fatal", ex.getMessage()); } } else - this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "El usuario o la contraseña son incorrectos"); + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "El usuario o la contraseña son incorrectos"); PrimeFaces.current().ajax().addCallbackParam("loggedIn", loggedIn); return viewRedirect; } + + /** + * Realiza un login semi-automatico. Por ejemplo desde el filtro de autorización. + * Se debe utilizar con propositos de depuración, para evitar realizar el login manual. + * + * @param ses + */ + public boolean autoLogin(HttpSession ses) { + //TODO: Eliminar este metodo al terminar el desarrollo. + boolean bResult = false; + LoggedUserTO usr = this.getRemoteManagerSystemAdmin().login(username, password); + + if (usr != null) { + SessionUtils.createOrUpdateSession(ses, usr); + bResult = true; + } + return bResult; + } // logout event, invalidate session public String logout() {