import 'server-only';
import { redirect } from 'next/navigation';
import { SESSION_REVOKED_PATH } from '@/lib/constants/logout';

/**
 * 다른 곳에서 로그인되면 백엔드가 저장한 refreshToken이 바뀌고, 그 뒤로 이 세션의 accessToken은
 * 403 + XPIRED_TOKEN(905)으로 거절된다(edupay-backend JwtAuthenticationFilter). 904는 같은 뜻의
 * 예비 코드다.
 *
 * 쿠키 삭제는 렌더 중에 할 수 없어(Next.js 제약) 라우트 핸들러로 넘긴다 — 거기서 세션을 지우고
 * `/login`으로 안내와 함께 되돌린다.
 */
const SESSION_REVOKED_CODES: ReadonlySet<number> = new Set([904, 905]);

export function redirectIfSessionRevoked(code: number): void {
  if (SESSION_REVOKED_CODES.has(code)) {
    redirect(SESSION_REVOKED_PATH);
  }
}
