From 4c441a9c28434e710f698b49918f391b33890b4f Mon Sep 17 00:00:00 2001 From: bicochan Date: Fri, 14 Mar 2025 11:27:10 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=B8=EC=A6=9D=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entities/auth/login/api/login-service.ts | 17 +++++------- apps/cs/src/shared/provider/auth-provider.tsx | 26 +++++++++++-------- packages/common/network/client.ts | 4 +-- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/apps/cs/src/entities/auth/login/api/login-service.ts b/apps/cs/src/entities/auth/login/api/login-service.ts index 722470184..8c14547a0 100644 --- a/apps/cs/src/entities/auth/login/api/login-service.ts +++ b/apps/cs/src/entities/auth/login/api/login-service.ts @@ -31,7 +31,7 @@ export class LoginApiService implements LoginService { const tokenId = data[AUTH_USER_ID]; if (!accessToken || !tokenId) { - throw new Error("[login] Missing required authentication tokens"); + throw new Error("Missing required authentication tokens"); } tokenManager.setToken(CLAIM_NAME, accessToken); @@ -42,11 +42,9 @@ export class LoginApiService implements LoginService { ); } catch (error) { if (error instanceof AxiosError) { - throw new Error( - `Login failed: ${error.response?.data?.message || error.message}`, - ); + throw new Error(`Login failed: ${error.response?.data?.message}`); } - throw error; + throw new Error(`Login failed: ${error}`); } } @@ -62,22 +60,19 @@ export class LoginApiService implements LoginService { const tokenId = data[AUTH_USER_ID]; if (!accessToken || !tokenId) { - throw new Error( - "[silentRefresh] Missing required authentication tokens", - ); + throw new Error("Missing required authentication tokens"); } tokenManager.setToken(CLAIM_NAME, accessToken); tokenManager.setToken(AUTH_USER_ID, tokenId); } catch (error) { - console.warn("Token has expired, logging out."); tokenManager.clearAuthToken(); if (error instanceof AxiosError) { throw new Error( - `Silent refresh failed: ${error.response?.data?.message || error.message}`, + `Silent refresh failed: ${error.response?.data?.message}`, ); } - throw error; + throw new Error(`Silent refresh failed: ${error}`); } } } diff --git a/apps/cs/src/shared/provider/auth-provider.tsx b/apps/cs/src/shared/provider/auth-provider.tsx index 7c827e948..60b273641 100644 --- a/apps/cs/src/shared/provider/auth-provider.tsx +++ b/apps/cs/src/shared/provider/auth-provider.tsx @@ -1,12 +1,12 @@ "use client"; +import { useRouter } from "next/navigation"; import { useQuery } from "@tanstack/react-query"; import { createContext, useContext, useState } from "react"; import { client } from "../api/client"; import { ENDPOINT } from "../config/api"; import { AUTH_USER_ID } from "../config/env"; import { getCookie } from "../lib/cookie"; -import { AxiosError } from "axios"; import { LoginApi } from "@/entities/auth/login"; interface IUserInfo { @@ -50,28 +50,32 @@ export interface AuthContextType { export const AuthContext = createContext(null); export const AuthProvider = ({ children }: { children: React.ReactNode }) => { + const router = useRouter(); const [userInfo, setUserInfo] = useState(null); useQuery({ queryKey: [ENDPOINT.USER_SERVICE.USERS], queryFn: 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}/${getCookie(AUTH_USER_ID)}`, + `${ENDPOINT.USER_SERVICE.USERS}/${userId}`, ); setUserInfo(response.data); return response; } catch (error) { console.error(error); - if (error instanceof AxiosError) { - if (error.response?.status === 401) { - try { - await LoginApi.silentRefresh(); - } catch (refreshError) { - console.error("Token refresh failed:", refreshError); - setUserInfo(null); - } - } + try { + await LoginApi.silentRefresh(); + } catch (refreshError) { + console.error("Token refresh failed:", refreshError); + setUserInfo(null); + router.push("/auth/login"); } } }, diff --git a/packages/common/network/client.ts b/packages/common/network/client.ts index 705c45d5d..1b82d31c6 100644 --- a/packages/common/network/client.ts +++ b/packages/common/network/client.ts @@ -28,12 +28,12 @@ class Client { if (!token || !userId) { throw new AxiosError( - "[Client] Missing required authentication tokens", + "The authentication token is invalid.", "UNAUTHORIZED", config, null, { - data: { message: "Missing required authentication tokens" }, + data: { message: "The authentication token is invalid." }, status: 401, statusText: "Unauthorized", headers: this.axiosInstance.defaults.headers,