From 25a2ac57161c76e3e09a84e15d53d516241a8718 Mon Sep 17 00:00:00 2001 From: bicochan Date: Wed, 19 Mar 2025 09:38:49 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=9D=B8=EC=A6=9D=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cs/src/entities/auth/ui/auth-wrapper.tsx | 43 ++++++++++--------- .../cs/src/pages/auth/login/ui/login-page.tsx | 5 ++- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/apps/cs/src/entities/auth/ui/auth-wrapper.tsx b/apps/cs/src/entities/auth/ui/auth-wrapper.tsx index ba175e697..705c03231 100644 --- a/apps/cs/src/entities/auth/ui/auth-wrapper.tsx +++ b/apps/cs/src/entities/auth/ui/auth-wrapper.tsx @@ -1,44 +1,47 @@ "use client"; +import { useEffect } from "react"; import { useRouter } from "next/navigation"; -import { useQuery } from "@tanstack/react-query"; import { client } from "@/shared/api"; -import { ENDPOINT, AUTH_USER_ID } from "@/shared/config"; -import { getCookie, useUserStore } from "@/shared/lib"; import type { IUserInfo } from "@/shared/store"; +import { getCookie, useUserStore } from "@/shared/lib"; +import { ENDPOINT, AUTH_USER_ID } from "@/shared/config"; import { LoginApi } from "../api/login-service"; const AuthWrapper = ({ children }: { children: React.ReactNode }) => { const router = useRouter(); - const { setUserInfo } = useUserStore((state) => state); + const { userInfo, setUserInfo } = useUserStore((state) => state); - useQuery({ - queryKey: [ENDPOINT.USER_SERVICE.USERS], - queryFn: async () => { + async function authCheck() { + const userId = getCookie(AUTH_USER_ID); + if (!userId) { + throw new Error("Missing required authentication tokens"); + } + + const response = await client.get( + `${ENDPOINT.USER_SERVICE.USERS}/${userId}`, + ); + if (!userInfo) setUserInfo(response.data); + } + + useEffect(() => { + (async () => { try { - const userId = getCookie(AUTH_USER_ID); - - if (!userId) { - throw new Error("Missing required authentication tokens"); - } - - const response = await client.get( - `${ENDPOINT.USER_SERVICE.USERS}/${userId}`, - ); - setUserInfo(response.data); - return response; + await authCheck(); } catch (error) { console.error(error); + try { await LoginApi.silentRefresh(); + await authCheck(); } catch (refreshError) { console.error("Token refresh failed:", refreshError); setUserInfo(null); router.push("/auth/login"); } } - }, - }); + })(); + }, []); return <>{children}; }; diff --git a/apps/cs/src/pages/auth/login/ui/login-page.tsx b/apps/cs/src/pages/auth/login/ui/login-page.tsx index d5e12966a..b5545f256 100644 --- a/apps/cs/src/pages/auth/login/ui/login-page.tsx +++ b/apps/cs/src/pages/auth/login/ui/login-page.tsx @@ -4,8 +4,10 @@ import Image from "next/image"; import { images } from "@common/assets"; import { LoginApi } from "@/entities/auth"; import "./login.css"; +import { useRouter } from "next/navigation"; function LoginPage() { + const router = useRouter(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); @@ -13,7 +15,8 @@ function LoginPage() { const userId = formData.get("id") as string; const password = formData.get("password") as string; - LoginApi.login({ userId, password }); + await LoginApi.login({ userId, password }); + router.push("/site"); }; return (