/** * ➡️ 경로 : 루트 (/) * * 📄 Home Page * 홈 페이지 컴포넌트 * * - 쿠키 기반 인증 토큰 검증 및 자동 로그인 처리 * - 로그인 성공 시 지도 페이지로 리다이렉트 * - 개발 환경에서는 루트 진입 시 자동 로그인 후 지도 페이지 이동 * - 로그인 실패 시 에러 로깅 및 처리 * - 사용자 세션 관리 및 초기 라우팅 제어 * - Next.js useRouter를 통한 클라이언트 사이드 라우팅 * * 🔗 사용 API * - 로그인: POST /api/v1/auth/login (user-service) */ "use client"; import { LoginApi } from "@/entities/auth"; import { useEffect } from "react"; const DEV_HOSTNAMES = new Set(["localhost", "127.0.0.1", "con.mind-one.co.kr"]); const DEV_LOGIN_PAYLOAD = { userId: process.env.NEXT_PUBLIC_DEV_LOGIN_USER_ID || "CLEANWATER", password: process.env.NEXT_PUBLIC_DEV_LOGIN_PASSWORD || "gktneh12!@", }; export default function Home() { useEffect(() => { const hostname = window.location.hostname; const isDevHost = DEV_HOSTNAMES.has(hostname); if (!isDevHost) { window.location.replace("/map"); return; } async function doLogin() { try { // 개발 환경에서는 남아 있는 만료/부분 쿠키로 인한 /map <-> / 루프를 막기 위해 항상 토큰을 재발급한다. await LoginApi.login(DEV_LOGIN_PAYLOAD); window.location.replace("/map"); } catch (err) { console.error("로그인 실패", err); } } void doLogin(); }, []); }