Spaces:
Runtime error
Runtime error
File size: 3,207 Bytes
6a5b8d8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
/**
* Client-side form validation and authentication handling
*/
document.addEventListener('DOMContentLoaded', function() {
const loginForm = document.getElementById('login-form');
if (loginForm) {
loginForm.addEventListener('submit', validateLoginForm);
}
const signupForm = document.getElementById('signup-form');
if (signupForm) {
signupForm.addEventListener('submit', validateSignupForm);
}
});
function validateLoginForm(e) {
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
const rememberMe = document.getElementById('remember-me')?.checked;
let isValid = true;
let errorMessage = '';
// Email validation
if (!email || !email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {
errorMessage = 'Please enter a valid email address';
isValid = false;
}
// Password validation
if (!password || password.length < 8) {
errorMessage = 'Password must be at least 8 characters long';
isValid = false;
}
if (!isValid) {
e.preventDefault();
showError(errorMessage);
}
}
function validateSignupForm(e) {
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
const confirmPassword = document.getElementById('confirm_password').value;
let isValid = true;
let errorMessage = '';
// Email validation
if (!email || !email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {
errorMessage = 'Please enter a valid email address';
isValid = false;
}
// Password validation
if (!password || password.length < 8) {
errorMessage = 'Password must be at least 8 characters long';
isValid = false;
} else if (!/[A-Z]/.test(password)) {
errorMessage = 'Password must contain at least one uppercase letter';
isValid = false;
} else if (!/[a-z]/.test(password)) {
errorMessage = 'Password must contain at least one lowercase letter';
isValid = false;
} else if (!/[0-9]/.test(password)) {
errorMessage = 'Password must contain at least one number';
isValid = false;
}
// Confirm password
if (password !== confirmPassword) {
errorMessage = 'Passwords do not match';
isValid = false;
}
if (!isValid) {
e.preventDefault();
showError(errorMessage);
}
}
function showError(message) {
// Remove any existing error alerts
const existingAlert = document.querySelector('.alert-danger');
if (existingAlert) {
existingAlert.remove();
}
// Create and show new error alert
const alert = document.createElement('div');
alert.className = 'alert alert-danger alert-dismissible fade show';
alert.role = 'alert';
alert.innerHTML = `
${message}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
`;
const form = document.querySelector('form');
form.parentNode.insertBefore(alert, form);
}
|