/**
 * 認証・セッション管理
 */

// ──────────────────────────────────────
// ページ描画前に即座に認証確認（フラッシュ防止）
// ──────────────────────────────────────
(function () {
  if (!window.location.pathname.includes("login.html")) {
    if (!localStorage.getItem("currentUser")) {
      // ページが見えてしまわないよう即座に非表示にしてからリダイレクト
      document.documentElement.style.visibility = "hidden";
      window.location.replace("/login.html");
    }
  }
})();

// bfcache（戻る/進むボタン）対応
// ブラウザがキャッシュからページを復元した場合も認証を再確認する
window.addEventListener("pageshow", function (event) {
  if (!window.location.pathname.includes("login.html")) {
    if (!localStorage.getItem("currentUser")) {
      // bfcacheから復元されたページを即座に非表示にしてリダイレクト
      document.documentElement.style.visibility = "hidden";
      window.location.replace("/login.html");
    }
  }
});

function checkAuth() {
  const user = localStorage.getItem("currentUser");
  if (!user) {
    window.location.replace("/login.html");
    return false;
  }
  return true;
}

function getCurrentUser() {
  const user = localStorage.getItem("currentUser");
  return user ? JSON.parse(user) : null;
}

function setCurrentUser(userData) {
  localStorage.setItem("currentUser", JSON.stringify(userData));
}

function logout() {
  localStorage.removeItem("currentUser");
  sessionStorage.clear();
  // replace() を使うことでログイン前の履歴に戻れなくなる
  window.location.replace("/login.html");
}

document.addEventListener("DOMContentLoaded", function () {
  if (!window.location.pathname.includes("login.html")) {
    checkAuth();
  }
});
