Files
streaming-site/public/auth.js
T
2024-11-28 21:16:40 +01:00

70 lines
2.2 KiB
JavaScript

const checkTokenValidity = () => {
const token = localStorage.getItem('token');
if (!token) return false;
return fetch('/users/me', {
headers: {
'Authorization': token
}
})
.then(response => {
if (!response.ok) {
localStorage.removeItem('token');
return false;
}
return true;
})
.catch(() => {
localStorage.removeItem('token');
return false;
});
};
document.addEventListener('DOMContentLoaded', async () => {
const token = localStorage.getItem('token');
const loginLink = document.getElementById('login-link');
const registerLink = document.getElementById('register-link');
const profileLink = document.getElementById('profile-link');
const adminLink = document.getElementById('admin-link');
const logoutButton = document.getElementById('logout-button');
if (token) {
const isValid = await checkTokenValidity();
if (!isValid) {
window.location.href = 'login.html';
return;
}
loginLink.style.display = 'none';
registerLink.style.display = 'none';
profileLink.style.display = 'block';
logoutButton.style.display = 'block';
fetch('/users/me', {
headers: {
'Authorization': token
}
})
.then(response => response.json())
.then(user => {
const welcomeMessage = document.getElementById('welcome-message');
if (welcomeMessage) {
welcomeMessage.textContent = `Bonjour ${user.email}`;
}
if (user.status === 'admin') {
adminLink.style.display = 'block';
}
});
logoutButton.addEventListener('click', () => {
localStorage.removeItem('token');
window.location.href = 'index.html';
});
} else {
loginLink.style.display = 'block';
registerLink.style.display = 'block';
profileLink.style.display = 'none';
adminLink.style.display = 'none';
logoutButton.style.display = 'none';
}
});