import { ref, computed } from "vue";

/**
 * 로그인된 관리자 정보 + 권한 체크 헬퍼
 * localStorage.admin_user를 읽어 메모리로 보관.
 *
 * 사용:
 *   const { user, isSuperAdmin, isAdmin, canAccess } = useAuth();
 */
export const useAuth = () => {
  const user = ref(null);

  const load = () => {
    if (typeof window === "undefined") return;
    try {
      user.value = JSON.parse(localStorage.getItem("admin_user") || "null");
    } catch {
      user.value = null;
    }
  };
  load();

  const isSuperAdmin = computed(() => user.value?.role === "super_admin");
  const isAdmin = computed(() => user.value?.role === "admin");

  // 메뉴 권한 체크 — dashboard는 모두 접근
  const canAccess = (menuId) => {
    if (menuId === "dashboard") return true;
    const u = user.value;
    if (!u) return false;
    if (u.role === "super_admin") return true;
    if (u.permissions === "all") return true;
    return Array.isArray(u.permissions) && u.permissions.includes(menuId);
  };

  return { user, isSuperAdmin, isAdmin, canAccess, reload: load };
};
