From 067203557f99a0eb2f2130171561a2d3298e5f48 Mon Sep 17 00:00:00 2001 From: dbshaejin Date: Mon, 9 Dec 2024 11:23:19 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20api=20=ED=98=B8=EC=B6=9C=20axios?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/queryFunctions/Auth.ts | 7 +++++ src/apis/queryFunctions/apiClient.ts | 10 +++++-- src/apis/queryFunctions/setTokenCookies.ts | 34 ---------------------- src/apis/queryHooks/Auth/useLogin.ts | 8 ++--- 4 files changed, 19 insertions(+), 40 deletions(-) delete mode 100644 src/apis/queryFunctions/setTokenCookies.ts diff --git a/src/apis/queryFunctions/Auth.ts b/src/apis/queryFunctions/Auth.ts index f2048820..2e4ecd0d 100644 --- a/src/apis/queryFunctions/Auth.ts +++ b/src/apis/queryFunctions/Auth.ts @@ -5,6 +5,8 @@ import { PostRegisterResponseData, PostEmailAuthParams, CheckEmailAuthParams, + LoginParams, + PostLoginResponseData, } from '@/apis/types/Auth'; import { Response } from '@/apis/types/common'; @@ -29,3 +31,8 @@ export const postEmailValidationCode = async (params: CheckEmailAuthParams) => { const response = await apiClient.post>('v2/mail/code', params); return response.data; }; + +export const postLogin = async (params: LoginParams) => { + const response = await apiClient.post>('v2/auth/login', params); + return response.data; +}; diff --git a/src/apis/queryFunctions/apiClient.ts b/src/apis/queryFunctions/apiClient.ts index 0623091e..a6eb6908 100644 --- a/src/apis/queryFunctions/apiClient.ts +++ b/src/apis/queryFunctions/apiClient.ts @@ -33,7 +33,6 @@ function createApiClient() { }, async error => { const refreshToken = localStorage.getItem('refreshToken'); - const originalRequest = error.config; if (error.response?.status === 401) { @@ -60,8 +59,15 @@ function createApiClient() { originalRequest.headers.Authorization = newAccessToken; return await client(originalRequest); } + + console.error('refreshToken도 만료되었습니다.'); + alert('재로그인이 필요합니다.'); + localStorage.removeItem('refreshToken'); + sessionStorage.removeItem('accessToken'); + window.location.href = '/login'; } catch (e) { - console.error('Failed to reissue token:', e); + alert('재로그인이 필요합니다.'); + console.error('accessToken 재발급 실패'); localStorage.removeItem('refreshToken'); sessionStorage.removeItem('accessToken'); window.location.href = '/login'; diff --git a/src/apis/queryFunctions/setTokenCookies.ts b/src/apis/queryFunctions/setTokenCookies.ts deleted file mode 100644 index 3cf5bc79..00000000 --- a/src/apis/queryFunctions/setTokenCookies.ts +++ /dev/null @@ -1,34 +0,0 @@ -'use server'; - -import { LoginParams } from '../types/Auth'; - -async function setTokenCookies(params: LoginParams) { - try { - const response = await fetch(`${process.env.NEXT_PUBLIC_SERVER_API_URL}/api/v2/auth/login`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(params), - }); - - if (!response.ok) { - // 서버 응답이 실패 상태인 경우 에러 처리 - const errorData = await response.json(); - - throw new Error(`Failed to reissue token: ${errorData.message || 'Unknown error'}`); - } - - const loginData = await response.json(); - - const accessToken = loginData.result_data?.access_token; - const refreshToken = loginData.result_data?.refresh_token; - - return { accessToken, refreshToken }; - } catch (error) { - console.error('Failed to bring token:', error); - throw error; // 호출자에게 에러 전달 - } -} - -export default setTokenCookies; diff --git a/src/apis/queryHooks/Auth/useLogin.ts b/src/apis/queryHooks/Auth/useLogin.ts index aa167da7..643c9440 100644 --- a/src/apis/queryHooks/Auth/useLogin.ts +++ b/src/apis/queryHooks/Auth/useLogin.ts @@ -2,7 +2,7 @@ import { useMutation } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { useRouter } from 'next/navigation'; -import setTokenCookies from '@/apis/queryFunctions/setTokenCookies'; +import { postLogin } from '@/apis/queryFunctions/Auth'; import { LoginParams } from '@/apis/types/Auth'; import { Response } from '@/apis/types/common'; import { useAuth } from '@/provider/authProvider'; @@ -17,10 +17,10 @@ function useLogin() { const { setIsLoggedIn } = useAuth(); const { mutate } = useMutation({ - mutationFn: (loginParams: LoginParams) => setTokenCookies(loginParams), + mutationFn: (loginParams: LoginParams) => postLogin(loginParams), onSuccess: data => { - sessionStorage.setItem('accessToken', data.accessToken); - localStorage.setItem('refreshToken', data.refreshToken); + sessionStorage.setItem('accessToken', data.result_data.access_token); + localStorage.setItem('refreshToken', data.result_data.refresh_token); setIsLoggedIn(true); showToast('success', '로그인 되었습니다.');