Browse Source

Se agrego una nueva pantalla de Login sin usar el componente de vaadin loginForm en lugar usando cuadros de texto simples, a ver si se arregla el problema de que se ciclaba en la vista de inicio de sesion

main
mramirezg 3 months ago
parent
commit
763572db82
7 changed files with 184 additions and 24 deletions
  1. +2
    -18
      frontend/themes/soportet.iv1.2/styles.css
  2. BIN
      src/main/bundles/dev.bundle
  3. BIN
      src/main/bundles/prod.bundle
  4. +5
    -5
      src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java
  5. +170
    -0
      src/main/java/mx/gob/jumapacelaya/views/login/Login.java
  6. +4
    -1
      src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java
  7. +3
    -0
      src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java

+ 2
- 18
frontend/themes/soportet.iv1.2/styles.css View File

@ -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;
}


BIN
src/main/bundles/dev.bundle View File


BIN
src/main/bundles/prod.bundle View File


+ 5
- 5
src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java View File

@ -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


+ 170
- 0
src/main/java/mx/gob/jumapacelaya/views/login/Login.java View File

@ -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")) {
}
}
}

+ 4
- 1
src/main/java/mx/gob/jumapacelaya/views/tickets/AllTicketsView.java View File

@ -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;


+ 3
- 0
src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java View File

@ -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;


Loading…
Cancel
Save