@@ -2,11 +2,12 @@ import { useRouter } from "next/navigation";
22
33import { AxiosResponse } from "axios" ;
44
5+ import { getTokenExpirationSeconds , setIsPrevLoginCookie } from "@/utils/authCookieUtils" ;
6+ import { isCookieLoginEnabled } from "@/utils/authUtils" ;
57import { publicAxiosInstance } from "@/utils/axiosInstance" ;
6- import { isCookieLoginEnabled } from "@/utils/localStorage" ;
7- import { saveRefreshTokenToLS } from "@/utils/localStorageUtils" ;
8+ import { saveAccessTokenToLS } from "@/utils/localStorageUtils" ;
89
9- import { setAccessToken } from "@/lib/zustand/useTokenStore " ;
10+ import useAuthStore from "@/lib/zustand/useAuthStore " ;
1011import { useMutation } from "@tanstack/react-query" ;
1112
1213interface UsePostEmailSignInResponse {
@@ -24,6 +25,7 @@ const postEmailAuth = ({ email, password }: LoginRequest): Promise<AxiosResponse
2425
2526const usePostEmailAuth = ( ) => {
2627 const router = useRouter ( ) ;
28+ const { setAccessToken } = useAuthStore ( ) ;
2729 return useMutation ( {
2830 mutationFn : postEmailAuth ,
2931 onSuccess : ( data ) => {
@@ -32,15 +34,24 @@ const usePostEmailAuth = () => {
3234 // 액세스 토큰은 항상 Zustand 스토어에 저장
3335 setAccessToken ( accessToken ) ;
3436
37+ // isPrevLogin 쿠키 설정 (성능 최적화를 위해)
38+ const expirationSeconds = getTokenExpirationSeconds ( accessToken ) ;
39+ if ( expirationSeconds && expirationSeconds > 0 ) {
40+ setIsPrevLoginCookie ( expirationSeconds ) ;
41+ } else {
42+ // 토큰 파싱에 실패한 경우 기본값으로 1시간 설정
43+ setIsPrevLoginCookie ( 3600 ) ; // 1 hour
44+ }
45+
3546 // 로컬스토리지 모드일 때만 리프레시 토큰을 로컬스토리지에 저장
3647 // 쿠키 모드일 때는 서버에서 HTTP-only 쿠키로 자동 설정됨
37- if ( ! isCookieLoginEnabled ( ) && refreshToken ) {
38- saveRefreshTokenToLS ( refreshToken ) ;
48+ if ( ! isCookieLoginEnabled ( ) && accessToken ) {
49+ saveAccessTokenToLS ( accessToken ) ;
3950 }
4051
4152 router . replace ( "/" ) ; // 로그인 성공 후 홈으로 리다이렉트
4253 } ,
43- onError : ( error ) => {
54+ onError : ( ) => {
4455 alert ( "이메일 또는 비밀번호가 올바르지 않습니다. 다시 시도해주세요." ) ;
4556 } ,
4657 } ) ;
0 commit comments