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 = new Set([904, 905]); export function redirectIfSessionRevoked(code: number): void { if (SESSION_REVOKED_CODES.has(code)) { redirect(SESSION_REVOKED_PATH); } }