11'use client' ;
22import { Middleware } from 'openapi-fetch' ;
33
4- import { getAccessToken , setAccessToken } from '@utils' ;
4+ import { getAccessToken , setAccessToken , setName , setRefreshToken } from '@utils' ;
5+ import { postRefreshToken } from '@/apis/controller/auth' ;
56
6- const UNPROTECTED_ROUTES = [ '/api/v1 /auth/admin /login' , '/api/v1 /auth/oauth/social-login ' ] ;
7+ const UNPROTECTED_ROUTES = [ '/api/student /auth/social /login' , '/api/common /auth/refresh ' ] ;
78
89const reissueToken = async ( ) => {
9- try {
10- const response = await fetch ( `${ process . env . NEXT_PUBLIC_API_BASE_URL } /api/v1/auth/reissue` , {
11- method : 'GET' ,
12- credentials : 'include' ,
13- } ) ;
10+ let accessToken = getAccessToken ( ) ;
1411
15- if ( ! response . ok ) throw new Error ( 'Token reissue failed' ) ;
16-
17- const data = await response . json ( ) ;
18- const accessToken = data . data . accessToken ;
19- setAccessToken ( accessToken ) ;
12+ if ( accessToken ) {
2013 return accessToken ;
21- } catch ( error ) {
22- console . error ( 'Reissue failed:' , error ) ;
14+ }
15+
16+ const result = await postRefreshToken ( ) ;
17+
18+ if ( ! result . isSuccess || ! result . data ) {
19+ console . error ( '액세스토큰 갱신 실패:' , result . error ) ;
2320 localStorage . removeItem ( 'accessToken' ) ;
21+ localStorage . removeItem ( 'refreshToken' ) ;
2422 window . location . href = '/login' ;
2523 return null ;
2624 }
25+
26+ if ( result . data ?. token . accessToken ) {
27+ setAccessToken ( result . data . token . accessToken ) ;
28+ accessToken = result . data . token . accessToken ;
29+ }
30+ if ( result . data ?. token . refreshToken ) {
31+ setRefreshToken ( result . data . token . refreshToken ) ;
32+ }
33+ if ( result . data ?. name ) {
34+ setName ( result . data . name ) ;
35+ }
36+ return accessToken ;
2737} ;
2838
2939const authMiddleware : Middleware = {
@@ -32,18 +42,12 @@ const authMiddleware: Middleware = {
3242 return undefined ;
3343 }
3444
35- let accessToken = getAccessToken ( ) ;
45+ const accessToken = await reissueToken ( ) ;
3646
37- if ( ! accessToken ) {
38- accessToken = await reissueToken ( ) ;
39-
40- if ( ! accessToken ) {
41- console . error ( 'Access token reissue failed. Logging out...' ) ;
42- return request ;
43- }
47+ if ( accessToken ) {
48+ request . headers . set ( 'Authorization' , `Bearer ${ accessToken } ` ) ;
4449 }
4550
46- request . headers . set ( 'Authorization' , `Bearer ${ accessToken } ` ) ;
4751 return request ;
4852 } ,
4953
0 commit comments