129 lines
4.8 KiB
JavaScript
129 lines
4.8 KiB
JavaScript
// Authentication related functions
|
|
import { showStatus } from './utils.js';
|
|
|
|
export let currentUser = null;
|
|
|
|
export async function checkAuth() {
|
|
try {
|
|
const response = await fetch('/api/auth/check');
|
|
const data = await response.json();
|
|
|
|
if (!data.authenticated) {
|
|
window.location.href = '/login.html';
|
|
throw new Error('Not authenticated');
|
|
}
|
|
|
|
currentUser = data.user;
|
|
updateUserInterface();
|
|
|
|
} catch (error) {
|
|
console.error('Auth check failed:', error);
|
|
window.location.href = '/login.html';
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
export function updateUserInterface() {
|
|
if (!currentUser) return;
|
|
|
|
// Update user email in both desktop and mobile
|
|
const userEmailElement = document.getElementById('user-email');
|
|
const mobileUserEmailElement = document.getElementById('mobile-user-email');
|
|
|
|
if (userEmailElement) {
|
|
userEmailElement.textContent = currentUser.email;
|
|
}
|
|
if (mobileUserEmailElement) {
|
|
mobileUserEmailElement.textContent = currentUser.email;
|
|
}
|
|
|
|
// Control visibility of homepage link for admins
|
|
const homepageLink = document.getElementById('homepage-link');
|
|
if (homepageLink) {
|
|
if (currentUser.isAdmin) {
|
|
homepageLink.style.display = 'inline-flex';
|
|
} else {
|
|
homepageLink.style.display = 'none';
|
|
}
|
|
}
|
|
|
|
// Add admin link if user is admin
|
|
if (currentUser.isAdmin) {
|
|
addAdminLinks();
|
|
}
|
|
}
|
|
|
|
function addAdminLinks() {
|
|
// Add admin link to desktop header
|
|
const headerActions = document.querySelector('.header-actions');
|
|
if (headerActions) {
|
|
const adminLink = document.createElement('a');
|
|
adminLink.href = '/admin.html';
|
|
adminLink.className = 'btn btn-secondary';
|
|
adminLink.textContent = '⚙️ Admin';
|
|
headerActions.insertBefore(adminLink, headerActions.firstChild);
|
|
}
|
|
|
|
// Add admin link to mobile dropdown
|
|
const mobileDropdownContent = document.getElementById('mobile-dropdown-content');
|
|
if (mobileDropdownContent) {
|
|
// Check if admin link already exists
|
|
if (!mobileDropdownContent.querySelector('.admin-link-mobile')) {
|
|
const adminItem = document.createElement('div');
|
|
adminItem.className = 'mobile-dropdown-item admin-link-mobile';
|
|
|
|
const adminLink = document.createElement('a');
|
|
adminLink.href = '/admin.html';
|
|
adminLink.style.color = 'inherit';
|
|
adminLink.style.textDecoration = 'none';
|
|
adminLink.textContent = '⚙️ Admin Panel';
|
|
|
|
adminItem.appendChild(adminLink);
|
|
|
|
// Insert admin link at the top of the dropdown
|
|
if (mobileDropdownContent.firstChild) {
|
|
mobileDropdownContent.insertBefore(adminItem, mobileDropdownContent.firstChild);
|
|
} else {
|
|
mobileDropdownContent.appendChild(adminItem);
|
|
}
|
|
}
|
|
|
|
// Add homepage link for mobile dropdown if it doesn't exist
|
|
if (!mobileDropdownContent.querySelector('.homepage-link-mobile')) {
|
|
const homepageItem = document.createElement('div');
|
|
homepageItem.className = 'mobile-dropdown-item homepage-link-mobile';
|
|
|
|
const homepageLink = document.createElement('a');
|
|
homepageLink.href = '#'; // Or the correct link for homepage
|
|
homepageLink.id = 'mobile-homepage-link';
|
|
homepageLink.style.color = 'inherit';
|
|
homepageLink.style.textDecoration = 'none';
|
|
homepageLink.textContent = '🖥️ Homepage';
|
|
|
|
homepageItem.appendChild(homepageLink);
|
|
|
|
// Insert after the admin link
|
|
const adminLink = mobileDropdownContent.querySelector('.admin-link-mobile');
|
|
if (adminLink && adminLink.nextSibling) {
|
|
mobileDropdownContent.insertBefore(homepageItem, adminLink.nextSibling);
|
|
} else if (adminLink) {
|
|
mobileDropdownContent.appendChild(homepageItem);
|
|
} else if (mobileDropdownContent.firstChild) {
|
|
mobileDropdownContent.insertBefore(homepageItem, mobileDropdownContent.firstChild);
|
|
} else {
|
|
mobileDropdownContent.appendChild(homepageItem);
|
|
}
|
|
|
|
// Add event listener for mobile homepage link
|
|
const mobileHomepageLink = document.getElementById('mobile-homepage-link');
|
|
const desktopHomepageLink = document.getElementById('homepage-link');
|
|
if (mobileHomepageLink && desktopHomepageLink) {
|
|
mobileHomepageLink.addEventListener('click', (e) => {
|
|
e.preventDefault();
|
|
desktopHomepageLink.click();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|