Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
/**
* Authentication JavaScript
*/
const Auth = {
init() {
this.setupEventListeners();
this.checkAuthentication();
},
setupEventListeners() {
// Form submissions
document.getElementById('login-form').addEventListener('submit', (e) => {
e.preventDefault();
this.handleLogin();
});
document.getElementById('register-form').addEventListener('submit', (e) => {
e.preventDefault();
this.handleRegister();
});
// Form switching
document.getElementById('show-register').addEventListener('click', (e) => {
e.preventDefault();
this.showRegisterForm();
});
document.getElementById('show-login').addEventListener('click', (e) => {
e.preventDefault();
this.showLoginForm();
});
},
showRegisterForm() {
document.getElementById('login-form').classList.add('hidden');
document.getElementById('register-form').classList.remove('hidden');
this.clearMessages();
},
showLoginForm() {
document.getElementById('register-form').classList.add('hidden');
document.getElementById('login-form').classList.remove('hidden');
this.clearMessages();
},
clearMessages() {
document.getElementById('login-error').classList.add('hidden');
document.getElementById('register-error').classList.add('hidden');
document.getElementById('register-success').classList.add('hidden');
},
async handleLogin() {
const form = document.getElementById('login-form');
const submitBtn = form.querySelector('button[type="submit"]');
const errorEl = document.getElementById('login-error');
const username = document.getElementById('login-username').value;
const password = document.getElementById('login-password').value;
// Disable button
submitBtn.disabled = true;
submitBtn.textContent = 'Logging in...';
errorEl.classList.add('hidden');
try {
const response = await fetch('php/login.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ username, password })
});
const data = await response.json();
if (data.success) {
// Store user info in localStorage
localStorage.setItem('user', JSON.stringify(data.user));
localStorage.setItem('session_id', data.session_id);
// Redirect to main app
window.location.href = 'index.html';
} else {
errorEl.textContent = data.error || 'Login failed';
errorEl.classList.remove('hidden');
}
} catch (error) {
console.error('Login error:', error);
errorEl.textContent = 'Connection error. Please try again.';
errorEl.classList.remove('hidden');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Login';
}
},
async handleRegister() {
const form = document.getElementById('register-form');
const submitBtn = form.querySelector('button[type="submit"]');
const errorEl = document.getElementById('register-error');
const successEl = document.getElementById('register-success');
const username = document.getElementById('register-username').value;
const email = document.getElementById('register-email').value;
const full_name = document.getElementById('register-fullname').value;
const password = document.getElementById('register-password').value;
const confirm = document.getElementById('register-confirm').value;
// Clear messages
errorEl.classList.add('hidden');
successEl.classList.add('hidden');
// Validate password match
if (password !== confirm) {
errorEl.textContent = 'Passwords do not match';
errorEl.classList.remove('hidden');
return;
}
// Disable button
submitBtn.disabled = true;
submitBtn.textContent = 'Creating account...';
try {
const response = await fetch('php/register.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ username, email, password, full_name })
});
const data = await response.json();
if (data.success) {
successEl.textContent = 'Account created successfully! Redirecting to login...';
successEl.classList.remove('hidden');
// Clear form
form.reset();
// Switch to login after 2 seconds
setTimeout(() => {
this.showLoginForm();
// Pre-fill username
document.getElementById('login-username').value = username;
}, 2000);
} else {
errorEl.textContent = data.error || 'Registration failed';
errorEl.classList.remove('hidden');
}
} catch (error) {
console.error('Registration error:', error);
errorEl.textContent = 'Connection error. Please try again.';
errorEl.classList.remove('hidden');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Create Account';
}
},
async checkAuthentication() {
// If already logged in, redirect to app
const user = localStorage.getItem('user');
if (user) {
try {
const response = await fetch('php/check_auth.php');
const data = await response.json();
if (data.authenticated) {
window.location.href = 'index.html';
} else {
// Session expired, clear local storage
localStorage.removeItem('user');
localStorage.removeItem('session_id');
}
} catch (error) {
console.error('Auth check error:', error);
}
}
}
};
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
Auth.init();
});