@@ -40,7 +40,7 @@ async function customDomainMiddleware (request, domain, subName) {
40
40
return redirectToAuthSync ( searchParams , domain , signup )
41
41
}
42
42
// if we have a verification token, exchange it for a session token
43
- if ( searchParams . has ( 'token' ) ) return establishAuthSync ( searchParams )
43
+ if ( searchParams . has ( 'token' ) ) return establishAuthSync ( request , searchParams )
44
44
45
45
// Territory URLs
46
46
// if sub param exists and doesn't match the domain's subname, update it
@@ -84,20 +84,25 @@ async function redirectToAuthSync (searchParams, domain, signup) {
84
84
85
85
// if we have a callbackUrl, we need to set it as redirectUri
86
86
if ( searchParams . has ( 'callbackUrl' ) ) {
87
- syncUrl . searchParams . set ( 'redirectUri' , searchParams . get ( 'callbackUrl' ) )
87
+ const callbackUrl = searchParams . get ( 'callbackUrl' )
88
+ // extract just the path portion if it's a full URL
89
+ const redirectUri = callbackUrl . startsWith ( 'http' )
90
+ ? new URL ( callbackUrl ) . pathname
91
+ : callbackUrl
92
+ syncUrl . searchParams . set ( 'redirectUri' , redirectUri )
88
93
}
89
94
90
95
return NextResponse . redirect ( syncUrl )
91
96
}
92
97
93
98
// POST to /api/auth/sync and set the session cookie
94
- async function establishAuthSync ( searchParams ) {
99
+ async function establishAuthSync ( request , searchParams ) {
95
100
// get the verification token from the search params
96
101
const token = searchParams . get ( 'token' )
97
102
// get the redirectUri from the search params
98
103
const redirectUri = searchParams . get ( 'redirectUri' ) || '/'
99
104
// prepare redirect to the redirectUri
100
- const res = NextResponse . redirect ( decodeURIComponent ( redirectUri ) )
105
+ const res = NextResponse . redirect ( new URL ( decodeURIComponent ( redirectUri ) , request . url ) )
101
106
102
107
// POST to /api/auth/sync to exchange verification token for session token
103
108
const response = await fetch ( `${ SN_MAIN_DOMAIN . origin } /api/auth/sync` , {
@@ -114,7 +119,7 @@ async function establishAuthSync (searchParams) {
114
119
const data = await response . json ( )
115
120
if ( data . status === 'ERROR' ) {
116
121
// if the response is an error, redirect to the home page
117
- return NextResponse . redirect ( '/' )
122
+ return NextResponse . redirect ( new URL ( '/' , request . url ) )
118
123
}
119
124
120
125
// set the session cookie
0 commit comments