@@ -36,24 +36,13 @@ instance.interceptors.response.use(
3636 async ( error : AxiosError < AxiosErrorResponse > ) => {
3737 if ( typeof window === "undefined" ) {
3838 // Server에서는 기본 전파
39- return Promise . reject ( error ) ;
40- }
39+ console . error ( error ) ;
4140
42- if ( error . response ?. status === 500 ) {
43- // 결제 에러는 공통 alert 미노출
44- if ( error . response ?. data . code === ERROR_CODE . PAYMENT ) {
45- return Promise . reject ( error ?. response ?. data ) ;
46- }
47-
48- alert ( "서버에러가 발생하였습니다. 관리자에게 문의해주세요." ) ;
49-
50- return Promise . reject ( error ?. response ?. data ) ;
51- }
52-
53- if ( error . config ?. url === API_URL . USER . REISSUE_ACCESS_TOKEN ) {
5441 return Promise . reject ( error ) ;
5542 }
5643
44+ console . error ( "##error" , JSON . stringify ( error ) ) ;
45+
5746 // 로그인이 필요한 요청이거나, 리프레시 토큰 모두 만료시 로그인 페이지로 이동
5847 if ( isAxiosErrorResponse ( error . response ?. data ) ) {
5948 // 엑세스 토큰 없음
@@ -83,12 +72,30 @@ instance.interceptors.response.use(
8372
8473 return ;
8574 }
86- }
8775
88- // 액세스 토큰 만료
89- if ( error . response ?. data . code === ERROR_CODE . ACCESS_TOKEN_EXPIRED ) {
90- try {
91- if ( isAlertShown ) {
76+ if ( error . response ?. data . code === ERROR_CODE . PAYMENT ) {
77+ return Promise . reject ( error ?. response ?. data ) ;
78+ }
79+
80+ // 액세스 토큰 만료
81+ if ( error . response ?. data . code === ERROR_CODE . ACCESS_TOKEN_EXPIRED ) {
82+ try {
83+ if ( isAlertShown ) {
84+ // 원래 요청 재시도
85+ const originalRequest = error . config ;
86+
87+ if ( ! originalRequest ) {
88+ return Promise . reject ( error ) ;
89+ }
90+
91+ return instance ( originalRequest ) ;
92+ }
93+
94+ // 엑세스 토큰 재발급
95+ isAlertShown = true ;
96+ await refreshAccessToken ( ) ;
97+ isAlertShown = false ;
98+
9299 // 원래 요청 재시도
93100 const originalRequest = error . config ;
94101
@@ -97,35 +104,25 @@ instance.interceptors.response.use(
97104 }
98105
99106 return instance ( originalRequest ) ;
100- }
107+ } catch ( error ) {
108+ if ( typeof window !== "undefined" ) {
109+ alert ( "로그인이 필요한 페이지입니다." ) ;
101110
102- // 엑세스 토큰 재발급
103- isAlertShown = true ;
104- await refreshAccessToken ( ) ;
105- isAlertShown = false ;
111+ // 엑세스 토큰 재발급 실패시 로그인 페이지로 이동
112+ safeLocalStorage . remove ( IS_LOGINED ) ;
106113
107- // 원래 요청 재시도
108- const originalRequest = error . config ;
109-
110- if ( ! originalRequest ) {
111- return Promise . reject ( error ) ;
112- }
114+ window . location . href = "/login" ;
115+ isAlertShown = false ;
113116
114- return instance ( originalRequest ) ;
115- } catch ( error ) {
116- if ( typeof window !== "undefined" ) {
117- alert ( "로그인이 필요한 페이지입니다." ) ;
118-
119- // 엑세스 토큰 재발급 실패시 로그인 페이지로 이동
120- safeLocalStorage . remove ( IS_LOGINED ) ;
121-
122- window . location . href = "/login" ;
123- isAlertShown = false ;
117+ return ;
118+ }
124119 }
125120 }
126121 }
127122
128- return Promise . reject ( error ?. response ?. data ) ;
123+ if ( error . response ?. status === 500 ) {
124+ return Promise . reject ( error ?. response ?. data ) ;
125+ }
129126 } ,
130127) ;
131128
0 commit comments