$(document).ready(function () { $('#loginForm').submit(function (event) { const enviarButton = document.getElementById("loginBtn"); enviarButton.querySelector('.indicator-label').style.display = 'none'; enviarButton.querySelector('.indicator-progress').style.display = 'inline-block'; document.getElementById("loginBtn").setAttribute("disabled", "true"); document.getElementById("dni").setAttribute("disabled", "true"); document.getElementById("password").setAttribute("disabled", "true"); toastr.warning('Comprobando credenciales, por favor, espere...'); event.preventDefault(); var dni = $('#dni').val(); var password = $('#password').val(); var recuerdame = $('#recuerdame').val(); if (!validateDNI(dni)) { toastr.error('DNI incorrecto. Debe tener 8 números seguidos de 1 letra.'); enviarButton.querySelector('.indicator-progress').style.display = 'none'; enviarButton.querySelector('.indicator-label').style.display = 'inline-block'; document.getElementById("loginBtn").removeAttribute("disabled"); document.getElementById("dni").removeAttribute("disabled"); document.getElementById("password").removeAttribute("disabled"); return; } if (!validatePassword(password)) { toastr.error('La contraseña debe tener al menos 8 caracteres, 1 número, 1 mayúscula, 1 minúscula y 1 carácter especial válido.'); enviarButton.querySelector('.indicator-progress').style.display = 'none'; enviarButton.querySelector('.indicator-label').style.display = 'inline-block'; document.getElementById("loginBtn").removeAttribute("disabled"); document.getElementById("dni").removeAttribute("disabled"); document.getElementById("password").removeAttribute("disabled"); return; } $.ajax({ url: 'backend/login', method: 'POST', data: { dni: dni, password: password, recuerdame: recuerdame }, success: function (response) { if (response === 'success') { toastr.success('Iniciando sesión...'); setTimeout(function () { window.location.href = 'panel?pg=0'; }, 4000); } else { enviarButton.querySelector('.indicator-progress').style.display = 'none'; enviarButton.querySelector('.indicator-label').style.display = 'inline-block'; document.getElementById("loginBtn").removeAttribute("disabled"); document.getElementById("dni").removeAttribute("disabled"); document.getElementById("password").removeAttribute("disabled"); toastr.error('Error: ' + response); } } }); }); function validateDNI(dni) { var pattern = /^[0-9]{8}[A-Za-z]$/; return pattern.test(dni); } function validatePassword(password) { var pattern = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^"'\\\/\s])[^"'\\\/\s]{8,}$/; return pattern.test(password); } });