diff --git a/src/pages/Mypage.jsx b/src/pages/Mypage.jsx index 29680f9d508fb2429327741ba71e3615d23d7743..68aa459334b2ff7b4ec65d3a3aeab50909674b7e 100644 --- a/src/pages/Mypage.jsx +++ b/src/pages/Mypage.jsx @@ -12,9 +12,10 @@ import Button from "../components/Button"; import LogoIcon from "../components/icons/LogoIcon"; import { fetchMyMeetings } from "../api/meeting"; import Card from "../components/Card"; +import { useNavigate } from "react-router-dom"; const MyPage = () => { - const { user } = useAuthStore(); // Zustand에서 user 상태 가져오기 + const { user, fetchSession } = useAuthStore(); // Zustand 상태 및 메서드 가져오기 const [activeTab, setActiveTab] = useState("lightning"); // 현재 활성화된 탭 const [receivedRequests, setReceivedRequests] = useState([]); const [sentRequests, setSentRequests] = useState([]); @@ -29,9 +30,28 @@ const MyPage = () => { const [meetingHasNext, setMeetingHasNext] = useState(true); const [meetingIsLoading, setMeetingIsLoading] = useState(false); + const navigate = useNavigate(); + // 탭 변경 함수 const switchTab = (tab) => setActiveTab(tab); + useEffect(() => { + const fetchUserSession = async () => { + try { + const userInfo = localStorage.getItem("user"); + if (!userInfo) { + alert("로그인이 필요한 페이지입니다."); + navigate("/login"); + } + await fetchSession(); // 세션 정보 가져오기 + } catch (error) { + console.error("Failed to fetch session:", error); + } + }; + + fetchUserSession(); + }, [fetchSession]); // 페이지 마운트 시 실행 + // 번개 모임 가져오기 useEffect(() => { const fetchMeetings = async () => { diff --git a/src/store/authStore.js b/src/store/authStore.js index 05da3b6d76f0c33cc904ff09ce58023eeacdb35f..5715ec0790157be2ec13b29f16ec913276eabfff 100644 --- a/src/store/authStore.js +++ b/src/store/authStore.js @@ -11,6 +11,7 @@ const useAuthStore = create((set) => ({ try { const userInfo = await getSessionInfo(); set({ user: userInfo }); + localStorage.setItem("user", { user: userInfo }); } catch (error) { console.error("Failed to fetch session info:", error); set({ user: null }); @@ -24,6 +25,7 @@ const useAuthStore = create((set) => ({ try { await logout(); set({ user: null }); + localStorage.removeItem("user"); } catch (error) { console.error("Failed to logout:", error); }