document.addEventListener('DOMContentLoaded', function() {
// Check if already logged in
const token = localStorage.getItem('posToken');
if (token) {
verifyToken(token);
}
// Login form submission
const loginForm = document.getElementById('loginForm');
const loginMessage = document.getElementById('loginMessage');
loginForm.addEventListener('submit', function(e) {
e.preventDefault();
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
// Reset message
loginMessage.innerHTML = '';
loginMessage.className = 'login-message';
// Call API
fetch(`${apiPath}/auth/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: username,
password: password
})
})
.then(response => response.json())
.then(data => {
if (data.status === 'success') {
// Save token and user info
localStorage.setItem('posToken', data.data.token);
localStorage.setItem('posUser', JSON.stringify(data.data.user));
// Redirect based on role
redirectByRole(data.data.user.role);
} else {
loginMessage.innerHTML = data.message;
loginMessage.className = 'login-message error';
}
})
.catch(error => {
loginMessage.innerHTML = 'An error occurred. Please try again.';
loginMessage.className = 'login-message error';
console.error('Login error:', error);
});
});
// Verify token function
function verifyToken(token) {
fetch(`${apiPath}/auth/verify`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
token: token
})
})
.then(response => response.json())
.then(data => {
if (data.status === 'success') {
// Token is valid, redirect based on role
redirectByRole(data.data.user.role);
} else {
// Token is invalid, clear storage
localStorage.removeItem('posToken');
localStorage.removeItem('posUser');
}
})
.catch(error => {
console.error('Token verification error:', error);
// On error, clear storage
localStorage.removeItem('posToken');
localStorage.removeItem('posUser');
});
}
// Redirect based on user role
function redirectByRole(role) {
switch (role) {
case 'admin':
case 'manager':
window.location.href = `${basePath}/admin/index.html`;
break;
case 'cashier':
window.location.href = `${basePath}/pos/index.html`;
break;
default:
loginMessage.innerHTML = 'Unknown user role';
loginMessage.className = 'login-message error';
break;
}
}
});