@@ -8,15 +8,7 @@ ensureSuperTokensInit();
88
99const handleCall = getAppDirRequestHandler ( ) ;
1010
11- // input
12- // { refreshSessionWithoutRequestResponse }
13- // async function
14- //
15-
1611export async function GET ( request : NextRequest ) {
17- if ( request . method === "GET" && request . url . includes ( "/session/refresh" ) ) {
18- return refreshSession ( request ) ;
19- }
2012 const res = await handleCall ( request ) ;
2113 if ( ! res . headers . has ( "Cache-Control" ) ) {
2214 // This is needed for production deployments with Vercel
@@ -44,118 +36,3 @@ export async function PATCH(request: NextRequest) {
4436export async function HEAD ( request : NextRequest ) {
4537 return handleCall ( request ) ;
4638}
47-
48- const refreshTokenCookieName = "sRefreshToken" ;
49- const refreshTokenHeaderName = "st-refresh-token" ;
50- async function refreshSession ( request : NextRequest ) {
51- console . log ( "Attempting session refresh" ) ;
52- const cookiesFromReq = await cookies ( ) ;
53-
54- const refreshToken =
55- request . cookies . get ( refreshTokenCookieName ) ?. value || request . headers . get ( refreshTokenHeaderName ) ;
56- if ( ! refreshToken ) {
57- return NextResponse . redirect ( new URL ( "/auth" , request . url ) ) ;
58- }
59-
60- const redirectTo = new URL ( "/" , request . url ) ;
61-
62- try {
63- const refreshResponse = await fetch ( `http://localhost:3000/api/auth/session/refresh` , {
64- method : "POST" ,
65- headers : {
66- "Content-Type" : "application/json" ,
67- Cookie : `sRefreshToken=${ refreshToken } ` ,
68- } ,
69- credentials : "include" ,
70- } ) ;
71- // console.log("Performed session refresh request");
72- // console.log(refreshResponse);
73- // console.log(refreshResponse.headers);
74- // console.log(await refreshResponse.text());
75-
76- const setCookieHeaders = refreshResponse . headers . getSetCookie ( ) ;
77- const frontToken = refreshResponse . headers . get ( "front-token" ) ;
78- if ( ! frontToken ) {
79- return NextResponse . redirect ( new URL ( "/auth" , request . url ) ) ;
80- }
81-
82- // TODO: Check for csrf token
83- if ( ! setCookieHeaders . length ) {
84- return NextResponse . redirect ( new URL ( "/auth" , request . url ) ) ;
85- }
86-
87- const response = NextResponse . redirect ( redirectTo ) ;
88- let sAccessToken : string | null = null ;
89- let sRefreshToken : string | null = null ;
90- for ( const header of setCookieHeaders ) {
91- if ( header . includes ( "sAccessToken" ) ) {
92- const match = header . match ( / s A c c e s s T o k e n = ( [ ^ ; ] + ) / ) ;
93- sAccessToken = match ? match [ 1 ] : null ;
94- }
95- if ( header . includes ( "sRefreshToken" ) ) {
96- const match = header . match ( / s R e f r e s h T o k e n = ( [ ^ ; ] + ) / ) ;
97- sRefreshToken = match ? match [ 1 ] : null ;
98- }
99- response . headers . append ( "set-cookie" , header ) ;
100- }
101-
102- response . headers . append ( "set-cookie" , `sFrontToken=${ frontToken } ` ) ;
103- response . headers . append ( "front-token" , frontToken ) ;
104- response . headers . append ( "frontToken" , frontToken ) ;
105- if ( sAccessToken ) {
106- response . headers . append ( "sAccessToken" , sAccessToken ) ;
107-
108- cookiesFromReq . set ( "sAccessToken" , sAccessToken ) ;
109- }
110- if ( sRefreshToken ) {
111- response . headers . append ( "sRefreshToken" , sRefreshToken ) ;
112-
113- cookiesFromReq . set ( "sRefreshToken" , sRefreshToken ) ;
114- }
115-
116- cookiesFromReq . set ( "sFrontToken" , frontToken ) ;
117-
118- // console.log(sAccessToken, sRefreshToken);
119-
120- return response ;
121- } catch ( err ) {
122- console . error ( "Error refreshing session" ) ;
123- console . error ( err ) ;
124- return NextResponse . redirect ( new URL ( "/auth" , request . url ) ) ;
125- }
126- }
127-
128- // async function saveTokensFromHeaders(response: Response) {
129- // logDebugMessage("saveTokensFromHeaders: Saving updated tokens from the response headers");
130- //
131- // const refreshToken = response.headers.get("st-refresh-token");
132- // if (refreshToken !== null) {
133- // logDebugMessage("saveTokensFromHeaders: saving new refresh token");
134- // await setToken("refresh", refreshToken);
135- // }
136- //
137- // const accessToken = response.headers.get("st-access-token");
138- // if (accessToken !== null) {
139- // logDebugMessage("saveTokensFromHeaders: saving new access token");
140- // await setToken("access", accessToken);
141- // }
142- //
143- // const frontToken = response.headers.get("front-token");
144- // if (frontToken !== null) {
145- // logDebugMessage("saveTokensFromHeaders: Setting sFrontToken: " + frontToken);
146- // await FrontToken.setItem(frontToken);
147- // updateClockSkewUsingFrontToken({ frontToken, responseHeaders: response.headers });
148- // }
149- // const antiCsrfToken = response.headers.get("anti-csrf");
150- // if (antiCsrfToken !== null) {
151- // // At this point, the session has either been newly created or refreshed.
152- // // Thus, there's no need to call getLocalSessionState with tryRefresh: true.
153- // // Calling getLocalSessionState with tryRefresh: true will cause a refresh loop
154- // // if cookie writes are disabled.
155- // const tok = await getLocalSessionState(false);
156- // if (tok.status === "EXISTS") {
157- // logDebugMessage("saveTokensFromHeaders: Setting anti-csrf token");
158- // await AntiCsrfToken.setItem(tok.lastAccessTokenUpdate, antiCsrfToken);
159- // }
160- // }
161- // }
0 commit comments