diff --git a/frontend/themes/soportet.iv1.2/styles.css b/frontend/themes/soportet.iv1.2/styles.css index a73035b..b6d54c2 100644 --- a/frontend/themes/soportet.iv1.2/styles.css +++ b/frontend/themes/soportet.iv1.2/styles.css @@ -12,22 +12,6 @@ vaadin-login-form-wrapper { border-radius: 30px; } -/*letras de los label*/ -vaadin-login-form-wrapper ::part(label) { - color: #6f7271; - transform: scale(1.2); -} - -/*letras de los enlaces*/ -vaadin-login-form-wrapper a { - color: #691b31; - transform: scale(1.2); -} - -/*vaadin-login-form input{ - background-color:#ddc9a3!important ; -}*/ - vaadin-login-form vaadin-button[theme~="submit"] { background-color: #691b31; } @@ -37,7 +21,7 @@ vaadin-login-form-wrapper::part(form-title) { } vaadin-login-form-wrapper::part(error-message) { - color: #a02142; + color: #691b31; } vaadin-text-field::part(input-field), vaadin-password-field::part(input-field) { @@ -76,7 +60,7 @@ vaadin-upload > vaadin-button { /* (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) */ /* (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) (*)(*) */ /* Estilos especificos para el TextField y TextArea */ -vaadin-text-field::part(label), vaadin-text-area::part(label) { +vaadin-text-field::part(label), vaadin-text-area::part(label), vaadin-password-field::part(label) { color: #691b31; } diff --git a/src/main/bundles/dev.bundle b/src/main/bundles/dev.bundle index 621532f..c8c0e5f 100644 Binary files a/src/main/bundles/dev.bundle and b/src/main/bundles/dev.bundle differ diff --git a/src/main/bundles/prod.bundle b/src/main/bundles/prod.bundle index 09a1275..9a3bb3b 100644 Binary files a/src/main/bundles/prod.bundle and b/src/main/bundles/prod.bundle differ diff --git a/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java b/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java index a429a78..406c4be 100644 --- a/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java +++ b/src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java @@ -2,7 +2,7 @@ package mx.gob.jumapacelaya.api; import com.vaadin.flow.spring.security.VaadinWebSecurity; import mx.gob.jumapacelaya.services.UserService; -import mx.gob.jumapacelaya.views.login.LoginView; +import mx.gob.jumapacelaya.views.login.Login; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -44,11 +44,11 @@ public class SecurityConfig extends VaadinWebSecurity { AntPathRequestMatcher.antMatcher(HttpMethod.GET, "/images/*.png") ).permitAll() .requestMatchers( - AntPathRequestMatcher.antMatcher(HttpMethod.GET, "/login*") + AntPathRequestMatcher.antMatcher(HttpMethod.GET, "/iniciarSesion*") ).permitAll() ) .formLogin(formLogin -> formLogin - .loginPage("/login") + .loginPage("/iniciarSesion") .successHandler((request, response, authentication) -> { String username = authentication.getName(); log.debug("Configure:loginSuccess: {}", authentication.getName()); @@ -62,10 +62,10 @@ public class SecurityConfig extends VaadinWebSecurity { response.sendRedirect(""); } }) - .failureUrl("/login?error=true") // Corrigiendo la URL de fallo + .failureUrl("/iniciarSesion?error=true") // Corrigiendo la URL de fallo ); super.configure(http); - setLoginView(http, LoginView.class); + setLoginView(http, Login.class); } @Autowired diff --git a/src/main/java/mx/gob/jumapacelaya/views/login/Login.java b/src/main/java/mx/gob/jumapacelaya/views/login/Login.java new file mode 100644 index 0000000..5730f62 --- /dev/null +++ b/src/main/java/mx/gob/jumapacelaya/views/login/Login.java @@ -0,0 +1,170 @@ +package mx.gob.jumapacelaya.views.login; + +import com.vaadin.flow.component.Key; +import com.vaadin.flow.component.button.Button; +import com.vaadin.flow.component.button.ButtonVariant; +import com.vaadin.flow.component.dependency.CssImport; +import com.vaadin.flow.component.html.H2; +import com.vaadin.flow.component.html.Image; +import com.vaadin.flow.component.icon.VaadinIcon; +import com.vaadin.flow.component.notification.Notification; +import com.vaadin.flow.component.notification.NotificationVariant; +import com.vaadin.flow.component.orderedlayout.HorizontalLayout; +import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import com.vaadin.flow.component.textfield.PasswordField; +import com.vaadin.flow.component.textfield.TextField; +import com.vaadin.flow.router.BeforeEnterEvent; +import com.vaadin.flow.router.BeforeEnterObserver; +import com.vaadin.flow.router.PageTitle; +import com.vaadin.flow.router.Route; +import com.vaadin.flow.server.auth.AnonymousAllowed; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.regex.Pattern; + +@Route("iniciarSesion") +@PageTitle("IniciarSesion") +@AnonymousAllowed +@CssImport("./themes/soportet.iv1.2/styles.css") +public class Login extends VerticalLayout implements BeforeEnterObserver { + + private final HttpServletRequest request; + + @Autowired + public Login(HttpServletRequest request) { + this.request = request; + + addClassName("login-rich-content"); + setSizeFull(); + setAlignItems(Alignment.CENTER); + setJustifyContentMode(JustifyContentMode.CENTER); + setPadding(false); + + HorizontalLayout mainLayout = new HorizontalLayout(); + mainLayout.setSizeFull(); + mainLayout.setPadding(false); + mainLayout.setMargin(false); + + Image logo = new Image("images/bckgndNvo.png", "Fondo Nvo color"); + logo.addClassName("login-logo"); + + Pattern emailPattern = Pattern.compile("^[\\w\\.-]+@[\\w\\.-]+\\.[a-z]{2,}$", Pattern.CASE_INSENSITIVE); + + + H2 title = new H2("Mesa de Ayuda JUMAPA Celaya"); + title.getStyle().set("width", "90%"); + title.getStyle().set("margin-top", "10px"); + title.getStyle().set("color", "#691b31"); + + + Button loginButton = new Button("Iniciar Sesión", VaadinIcon.SIGN_IN.create()); + loginButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY); + loginButton.getStyle().set("width", "80%"); + loginButton.addClickShortcut(Key.ENTER); + + TextField username = new TextField("Usuario"); + username.getStyle().set("width", "80%"); + username.addValueChangeListener(event -> { + String value = event.getValue(); + if (emailPattern.matcher(value).matches()) { + username.setInvalid(true); + username.setErrorMessage("No se permite ingresar un correo electrónico, solo nombres de usuario"); + loginButton.setEnabled(false); + } else { + username.setInvalid(false); + username.setErrorMessage(null); + loginButton.setEnabled(true); + } + }); + username.setClearButtonVisible(true); + username.setRequired(true); + username.setInvalid(false); + + PasswordField password = new PasswordField("Contraseña"); + password.getStyle().set("width", "80%"); + password.setRequired(true); + + + VerticalLayout fieldLayout = new VerticalLayout(); + fieldLayout.add(title, username, password, loginButton); + fieldLayout.setAlignItems(Alignment.CENTER); + fieldLayout.setJustifyContentMode(JustifyContentMode.CENTER); + fieldLayout.setPadding(true); + fieldLayout.getStyle().set("background-color", "#ddc9a3"); + fieldLayout.getStyle().set("border-radius", "30px"); + fieldLayout.getStyle().set("height", "300px"); + fieldLayout.getStyle().set("width", "300px"); + + VerticalLayout formContainer = new VerticalLayout(); + Image imageLogin = new Image("images/JUMAPA_NVO.png", "logo"); + imageLogin.setWidth("300px"); + + formContainer.add(imageLogin, fieldLayout); + formContainer.setSizeUndefined(); + formContainer.setPadding(true); + formContainer.setMargin(false); + formContainer.setAlignItems(Alignment.CENTER); + formContainer.setJustifyContentMode(JustifyContentMode.CENTER); + formContainer.getElement().getThemeList().add("dark"); + + mainLayout.add(formContainer, logo); + mainLayout.setFlexGrow(1, formContainer); + mainLayout.setFlexGrow(2, logo); + + + loginButton.addClickListener(e -> { + boolean valid = true; + + if (username.isEmpty()) { + username.setInvalid(true); + valid = false; + + } else { + username.setInvalid(false); + } + + if (password.isEmpty()) { + password.setInvalid(true); + valid = false; + + } else { + password.setInvalid(false); + } + + if (!valid) { + Notification notification = new Notification("Por favor, completa todos los campos requeridos."); + notification.addThemeVariants(NotificationVariant.LUMO_ERROR); + notification.setDuration(3000); + notification.setPosition(Notification.Position.MIDDLE); + notification.open(); + return; + } + + try { + request.login(username.getValue(), password.getValue()); + getUI().ifPresent(ui -> ui.navigate("")); + } catch (ServletException ex) { + Notification notification = new Notification("!Usuario o Contraseña incorrectos, verifica tus datos!"); + notification.addThemeVariants(NotificationVariant.LUMO_ERROR); + notification.setDuration(3000); + notification.setPosition(Notification.Position.MIDDLE); + notification.open(); + } + }); + + add(mainLayout); + } + + @Override + public void beforeEnter(BeforeEnterEvent event) { + if (event.getLocation() + .getQueryParameters() + .getParameters() + .containsKey("error")) { + + + } + } +} diff --git a/src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java b/src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java index 89ca795..22f149e 100644 --- a/src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java +++ b/src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java @@ -151,7 +151,7 @@ public class AllTicketsView extends VerticalLayout { } VerticalLayout commentLayout = new VerticalLayout(); - commentLayout.getElement().getStyle().set("background", "#DDC9A3"); + commentLayout.getElement().getStyle().set("background", "#f1f1f1"); commentLayout.getElement().getStyle().set("padding", "10px"); commentLayout.getElement().getStyle().set("border-radius", "5px"); commentLayout.getElement().getStyle().set("margin-bottom", "5px"); @@ -211,6 +211,9 @@ public class AllTicketsView extends VerticalLayout { case "solicitado": span.getElement().getStyle().set("color","purple"); break; + case "asignada": + span.getElement().getStyle().set("color","#008080"); + break; default: span.getElement().getStyle().set("color","green"); break; diff --git a/src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java b/src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java index 75b43c9..2a21955 100644 --- a/src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java +++ b/src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java @@ -211,6 +211,9 @@ public class MisTicketsView extends VerticalLayout { case "solicitado": span.getElement().getStyle().set("color","purple"); break; + case "asignada": + span.getElement().getStyle().set("color","#008080"); + break; default: span.getElement().getStyle().set("color","green"); break;