/**
 * SUPER_ADMIN 의 cross-tenant(전사) 모드 판정 유틸.
 *
 * 백엔드 cross-tenant 엔드포인트가 동작하려면:
 *   1. JWT.user_type === "SUPER_ADMIN"
 *   2. 현재 컨텍스트 == META DB
 * 둘 다 만족해야 함. 프론트는 (1) + (2)를 직접 못 보지만,
 * SUPER_ADMIN 이 회사 도메인으로 switch 하면 JWT.company_code 가 그 회사 코드로 바뀐다.
 * 그러므로 (user_type === "SUPER_ADMIN" && company_code === "*") 가 메타 컨텍스트의 정확한 신호.
 *
 * 회사 도메인으로 switch 한 SUPER_ADMIN 은 JWT.company_code 가 회사 코드로 바뀌어 false 가 됨
 * → 자연스럽게 단일 회사 모드로 복귀.
 *
 * @see notes/gbpark/2026-04-27-cross-tenant-admin-aggregation.md §8.1
 */

interface JwtClaims {
  user_type?: string;
  company_code?: string;
  user_id?: string;
}

/**
 * 토큰의 Base64 페이로드만 디코드. 무결성 검증은 백엔드 책임.
 */
export function decodeJwtClaims(): JwtClaims | null {
  if (typeof window === "undefined") return null;
  const token = localStorage.getItem("authToken");
  if (!token) return null;
  try {
    const payload = token.split(".")[1];
    return JSON.parse(atob(payload));
  } catch {
    return null;
  }
}

/**
 * 현재 SUPER_ADMIN cross-tenant(전사) 모드인가?
 * 어드민 14개 메뉴 API 클라이언트는 이걸로 분기해서
 * /admin/cross-tenant/* 엔드포인트 또는 단일 회사 엔드포인트를 골라 호출.
 */
export function isCrossTenantMode(): boolean {
  const c = decodeJwtClaims();
  return c?.user_type === "SUPER_ADMIN" && c?.company_code === "*";
}
