/**
 * auth-guard.js
 * Included on every protected page.
 *
 * - If /api/v1/auth/me returns 401 → redirect to login.html immediately.
 *   (When AUTH_ENABLED=false the endpoint returns a synthetic guest user,
 *   so the redirect only fires in production auth-enabled mode.)
 * - On success, populate the sidebar user widget and wire up the logout button.
 */
(async () => {
  try {
    const r = await fetch('/api/v1/auth/me', { credentials: 'include' });
    if (r.status === 401) {
      location.replace('login.html');
      return;
    }
    if (r.ok) {
      const u = await r.json();
      const name = u.display_name || u.username || 'User';
      const userNameEl   = document.getElementById('userName');
      const userAvatarEl = document.getElementById('userAvatar');
      const userRoleEl   = document.getElementById('userRole');
      if (userNameEl)   userNameEl.textContent   = name;
      if (userAvatarEl) userAvatarEl.textContent = name[0].toUpperCase();
      if (userRoleEl)   userRoleEl.textContent   = u.role || '';
    }
  } catch (_) {
    // Network error — don't redirect; the user may be on a dev build without auth.
  }
  const logoutBtn = document.getElementById('logoutBtn');
  if (logoutBtn) {
    logoutBtn.onclick = async () => {
      try { await fetch('/api/v1/auth/logout', { method: 'POST', credentials: 'include' }); } catch (_) {}
      location.href = 'login.html';
    };
  }
})();
