Files
Challenge_15_Magazijn_App_M…/public/js/register.js
2025-10-21 20:54:03 +02:00

60 lines
1.9 KiB
JavaScript

// Registration form handling
document.getElementById('registrationForm').addEventListener('submit', async (e) => {
e.preventDefault();
const username = document.getElementById('username').value.toLowerCase(); // Convert to lowercase
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
const confirmPassword = document.getElementById('confirmPassword').value;
// Validate username (only allow alphanumeric and underscores)
const usernameRegex = /^[a-z0-9_]+$/;
if (!usernameRegex.test(username)) {
alert('Username can only contain letters, numbers, and underscores');
return;
}
// Validate password match
if (password !== confirmPassword) {
alert('Passwords do not match!');
return;
}
// Validate email format
const emailRegex = /^\d+@vistacollege\.nl$/;
if (!emailRegex.test(email)) {
alert('Email must be in the format: studentnumber@vistacollege.nl');
return;
}
try {
const response = await fetch('/api/auth/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
email,
password
})
});
const data = await response.json();
if (response.ok) {
// Store the token and user info
localStorage.setItem('token', data.token);
localStorage.setItem('userRole', data.role);
localStorage.setItem('username', data.username.toLowerCase());
// Redirect to student dashboard
window.location.href = '/student.html';
} else {
alert(data.message || 'Registration failed');
}
} catch (error) {
console.error('Registration error:', error);
alert('An error occurred during registration');
}
});