"use client"; import { useEffect, useState } from "react"; import { tokenSync } from "@/lib/sessionManager"; import { apiClient } from "@/lib/api/client"; export default function DebugLayoutPage() { const [debugInfo, setDebugInfo] = useState({}); const [apiTestResult, setApiTestResult] = useState(null); useEffect(() => { const token = localStorage.getItem("authToken"); const info = { hasToken: !!token, tokenLength: token ? token.length : 0, tokenStart: token ? token.substring(0, 30) + "..." : "없음", currentUrl: window.location.href, pathname: window.location.pathname, timestamp: new Date().toISOString(), sessionToken: !!sessionStorage.getItem("authToken"), tokenValid: token ? tokenSync.validateToken(token) : false, }; setDebugInfo(info); console.log("=== DebugLayoutPage 토큰 정보 ===", info); }, []); const handleTokenSync = () => { const result = tokenSync.forceSync(); alert(`토큰 동기화: ${result ? "성공" : "실패"}`); window.location.reload(); }; const handleTokenRestore = () => { const result = tokenSync.restoreFromSession(); alert(`토큰 복원: ${result ? "성공" : "실패"}`); window.location.reload(); }; const handleApiTest = async () => { try { console.log("🧪 API 테스트 시작"); setApiTestResult({ status: "loading", message: "API 호출 중..." }); // 간단한 API 호출 테스트 const response = await apiClient.get("/auth/status"); setApiTestResult({ status: "success", message: "API 호출 성공", data: response.data, statusCode: response.status, }); console.log("✅ API 테스트 성공:", response.data); } catch (error: any) { setApiTestResult({ status: "error", message: "API 호출 실패", error: error.message, statusCode: error.response?.status, data: error.response?.data, }); console.error("❌ API 테스트 실패:", error); } }; const handleUserApiTest = async () => { try { console.log("🧪 사용자 API 테스트 시작"); setApiTestResult({ status: "loading", message: "사용자 API 호출 중..." }); // 사용자 목록 API 호출 테스트 const response = await apiClient.get("/admin/users", { params: { page: 1, countPerPage: 5 }, }); setApiTestResult({ status: "success", message: "사용자 API 호출 성공", data: response.data, statusCode: response.status, }); console.log("✅ 사용자 API 테스트 성공:", response.data); } catch (error: any) { setApiTestResult({ status: "error", message: "사용자 API 호출 실패", error: error.message, statusCode: error.response?.status, data: error.response?.data, }); console.error("❌ 사용자 API 테스트 실패:", error); } }; const handleHealthCheck = async () => { try { console.log("🏥 헬스 체크 시작"); setApiTestResult({ status: "loading", message: "서버 상태 확인 중..." }); // 백엔드 서버 헬스 체크 const response = await fetch("http://localhost:8080/health"); const data = await response.json(); setApiTestResult({ status: "success", message: "서버 상태 확인 성공", data: data, statusCode: response.status, }); console.log("✅ 헬스 체크 성공:", data); } catch (error: any) { setApiTestResult({ status: "error", message: "서버 상태 확인 실패", error: error.message, statusCode: error.status, data: null, }); console.error("❌ 헬스 체크 실패:", error); } }; return (

관리자 레이아웃 디버깅

토큰 상태

토큰 존재: {debugInfo.hasToken ? "✅ 예" : "❌ 아니오"}

토큰 길이: {debugInfo.tokenLength}

토큰 시작: {debugInfo.tokenStart}

토큰 유효성: {debugInfo.tokenValid ? "✅ 유효" : "❌ 무효"}

SessionStorage 토큰: {debugInfo.sessionToken ? "✅ 존재" : "❌ 없음"}

페이지 정보

현재 URL: {debugInfo.currentUrl}

Pathname: {debugInfo.pathname}

시간: {debugInfo.timestamp}

토큰 관리

API 테스트

{apiTestResult && (

{apiTestResult.message}

{apiTestResult.statusCode &&

상태 코드: {apiTestResult.statusCode}

} {apiTestResult.error &&

오류: {apiTestResult.error}

} {apiTestResult.data && (
응답 데이터
                    {JSON.stringify(apiTestResult.data, null, 2)}
                  
)}
)}

메뉴 이동 테스트

); }