From dbd016bcf931fa7355dc768728c47d7d174de30e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=84=9D=EC=B0=AC=20=EC=9C=A4?= <ysc0731@ajou.ac.kr>
Date: Sun, 8 Dec 2024 19:10:24 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B9=84=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?=
 =?UTF-8?q?=EC=8B=9C=20=EC=A0=91=EA=B7=BC=20=EC=B0=A8=EB=8B=A8=20=EB=A1=9C?=
 =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80=20(#11)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/pages/Mypage.jsx   | 22 +++++++++++++++++++++-
 src/store/authStore.js |  2 ++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/pages/Mypage.jsx b/src/pages/Mypage.jsx
index 29680f9..68aa459 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 05da3b6..5715ec0 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);
     }
-- 
GitLab