diff --git a/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java b/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java index fb692aa..a429a78 100644 --- a/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java +++ b/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java @@ -49,20 +49,22 @@ public class SecurityConfig extends VaadinWebSecurity { ) .formLogin(formLogin -> formLogin .loginPage("/login") - /*.successHandler((request, response, authentication) -> { - //String username = authentication.getName(); + .successHandler((request, response, authentication) -> { + String username = authentication.getName(); log.debug("Configure:loginSuccess: {}", authentication.getName()); - if (userService.getAuthenticatedRedmineUser() == null) { - log.debug("Configure:getAuthenticatedRedmineUser Error: {}", authentication.getName()); - response.sendRedirect("/login"); - } //else { - //response.sendRedirect(""); - //} - })*/ + var user = userService.getAuthenticatedRedmineUser(); + log.debug("Authenticated user: {}", user); + + if (user == null) { + log.warn("Usuario autenticado pero no encontrado en Redmine. Redirigiendo a página de error."); + response.sendRedirect(""); + } else { + response.sendRedirect(""); + } + }) .failureUrl("/login?error=true") // Corrigiendo la URL de fallo ); super.configure(http); - setLoginView(http, LoginView.class); } diff --git a/src/main/java/mx/gob/jumapacelaya/models/Journals.java b/src/main/java/mx/gob/jumapacelaya/models/Journals.java new file mode 100644 index 0000000..b6d0824 --- /dev/null +++ b/src/main/java/mx/gob/jumapacelaya/models/Journals.java @@ -0,0 +1,4 @@ +package mx.gob.jumapacelaya.models; + +public class Journals { +} diff --git a/src/main/java/mx/gob/jumapacelaya/services/UserService.java b/src/main/java/mx/gob/jumapacelaya/services/UserService.java index f8d12a1..b042bb2 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/UserService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/UserService.java @@ -1,5 +1,7 @@ package mx.gob.jumapacelaya.services; +import com.vaadin.flow.component.notification.Notification; +import com.vaadin.flow.component.notification.NotificationVariant; import com.vaadin.flow.server.VaadinService; import mx.gob.jumapacelaya.api.RedmineClient; import mx.gob.jumapacelaya.api.SecurityService; @@ -39,8 +41,8 @@ public class UserService { CustomUserDetails userDetails = ldapService.getUserDetails(username); if (userDetails != null) { if (userDetails.getEmail() == null || userDetails.getEmail().isEmpty()) { - logger.error("El usuario: " + username + " no tiene correo electronico."); - return null; + logger.warn("El usuario {} no tiene correo electrónico. Asignando uno por defecto.", username); + userDetails.setEmail(username + "@jumapacelaya.gob.mx"); // Asigna un correo por defecto } RedmineUser newUser = RedmineClient.createRedmineUser( username, @@ -48,6 +50,7 @@ public class UserService { userDetails.getLastName(), userDetails.getEmail() ); + if (newUser != null) { logger.info("Usuario creado en Redmine: " + newUser); return newUser; @@ -89,8 +92,9 @@ public class UserService { } } }else{ - logger.error("No se pudo obtener al usuario autenticado en Redmine"); - securityService.logout(); + logger.error("No se pudo obtener al usuario autenticado en Redmine. Permitiendo acceso limitado"); + Notification.show("No se pudo obtener al usuario autenticado en Redmine. Permitiendo acceso limitado") + .addThemeVariants(NotificationVariant.LUMO_WARNING); } } return userclient; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4e1161b..5997237 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -34,4 +34,4 @@ spring.servlet.multipart.max-request-size=10MB ##############TIEMPO DE DURACION DE LA SESION################# server.servlet.session.timeout=30m -vaadin.session.expiration=30m +server.servlet.session.cookie.secure=true