// 인증 헤더 유틸리티
// API 요청 시 자동으로 인증 헤더 추가

/**
 * API 요청에 사용할 헤더 생성 (프록시 패턴용)
 * - Content-Type: application/json
 * - Accept: Laravel expectsJson() 체크용
 *
 * ⚠️ 중요: Authorization과 X-API-KEY는 Next.js 프록시에서 서버사이드로 처리
 * - HttpOnly 쿠키는 JavaScript로 읽을 수 없음 (보안)
 * - /api/proxy/* 라우트가 서버에서 쿠키와 API_KEY를 헤더에 추가
 */
export const getAuthHeaders = (): HeadersInit => {
  return {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
  };
};

/**
 * Multipart/form-data 요청에 사용할 헤더 생성 (프록시 패턴용)
 * - Content-Type은 브라우저가 자동으로 설정 (boundary 포함)
 *
 * ⚠️ 중요: Authorization과 X-API-KEY는 Next.js 프록시에서 서버사이드로 처리
 * - /api/proxy/* 라우트가 서버에서 쿠키와 API_KEY를 헤더에 추가
 */
export const getMultipartHeaders = (): HeadersInit => {
  return {
    'Accept': 'application/json',
    // Content-Type은 명시하지 않음 (multipart/form-data; boundary=... 자동 설정)
  };
};

/**
 * 인증 상태 확인
 *
 * ⚠️ 중요: access_token은 HttpOnly 쿠키로 JavaScript에서 읽을 수 없음
 * - is_authenticated 쿠키는 non-HttpOnly로 JavaScript에서 접근 가능
 * - 로그인/토큰갱신 시 함께 설정되어 인증 상태를 나타냄
 * - FCM 토큰 등록 등 클라이언트에서 인증 상태 확인이 필요한 경우 사용
 */
export const hasAuthToken = (): boolean => {
  if (typeof window === 'undefined') return false;
  // ✅ is_authenticated 쿠키로 인증 상태 확인 (non-HttpOnly)
  const isAuth = document.cookie.split('; ').find(row => row.startsWith('is_authenticated='))?.split('=')[1];
  return isAuth === 'true';
};
