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