87 lines
2.9 KiB
JavaScript

// Login page specific functionality
document.addEventListener('DOMContentLoaded', function() {
const loginForm = document.getElementById('login-form');
const loginBtn = document.getElementById('login-btn');
const loginText = document.getElementById('login-text');
const loading = document.querySelector('.loading');
const errorMessage = document.getElementById('error-message');
// Check if already logged in
checkSession();
loginForm.addEventListener('submit', async function(e) {
e.preventDefault();
const email = document.getElementById('email').value.trim();
const password = document.getElementById('password').value;
if (!email || !password) {
showError('Please enter both email and password');
return;
}
setLoading(true);
hideError();
try {
const response = await apiClient.post('/auth/login', {
email,
password
});
if (response.success) {
// Redirect based on user role
if (response.user && response.user.isAdmin) {
window.location.href = '/admin.html';
} else {
window.location.href = '/dashboard.html';
}
} else {
showError(response.error || 'Login failed');
}
} catch (error) {
console.error('Login error:', error);
showError(error.message || 'Login failed. Please try again.');
} finally {
setLoading(false);
}
});
async function checkSession() {
try {
const response = await apiClient.get('/auth/session');
if (response.authenticated && response.user) {
// Already logged in, redirect based on user role
if (response.user.isAdmin) {
window.location.href = '/admin.html';
} else {
window.location.href = '/dashboard.html';
}
}
} catch (error) {
// Not logged in, continue with login form
console.log('Not logged in');
}
}
function setLoading(isLoading) {
loginBtn.disabled = isLoading;
loginText.style.display = isLoading ? 'none' : 'inline';
loading.style.display = isLoading ? 'block' : 'none';
}
function showError(message) {
errorMessage.textContent = message;
errorMessage.style.display = 'block';
}
function hideError() {
errorMessage.style.display = 'none';
}
// Check for URL parameters
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('expired') === 'true') {
showError('Your session has expired. Please log in again.');
}
});