@@ -32,58 +32,43 @@ export async function login({ timeout = 5 * 60 * 1000, verbose = false }: LoginO
3232 console . log ( `[Auth] Starting local callback server on port ${ port } ` )
3333 }
3434
35- const corsHeaders = {
36- "Access-Control-Allow-Origin" : AUTH_BASE_URL ,
37- "Access-Control-Allow-Methods" : "POST, OPTIONS" ,
38- "Access-Control-Allow-Headers" : "Content-Type" ,
39- }
40-
4135 // Create promise that will be resolved when we receive the callback.
4236 const tokenPromise = new Promise < { token : string ; state : string } > ( ( resolve , reject ) => {
4337 const server = http . createServer ( ( req , res ) => {
4438 const url = new URL ( req . url ! , host )
4539
46- // Handle CORS preflight request.
47- if ( req . method === "OPTIONS" ) {
48- res . writeHead ( 204 , corsHeaders )
49- res . end ( )
50- return
51- }
52-
53- if ( url . pathname === "/callback" && req . method === "POST" ) {
40+ if ( url . pathname === "/callback" ) {
5441 const receivedState = url . searchParams . get ( "state" )
5542 const token = url . searchParams . get ( "token" )
5643 const error = url . searchParams . get ( "error" )
5744
58- const sendJsonResponse = ( status : number , body : object ) => {
59- res . writeHead ( status , {
60- ...corsHeaders ,
61- "Content-Type" : "application/json" ,
62- } )
63- res . end ( JSON . stringify ( body ) )
64- }
65-
6645 if ( error ) {
67- sendJsonResponse ( 400 , { success : false , error } )
68- res . on ( "close" , ( ) => {
46+ const errorUrl = new URL ( `${ AUTH_BASE_URL } /cli/sign-in?error=error-in-callback` )
47+ errorUrl . searchParams . set ( "message" , error )
48+ res . writeHead ( 302 , { Location : errorUrl . toString ( ) } )
49+ res . end ( ( ) => {
6950 server . close ( )
7051 reject ( new Error ( error ) )
7152 } )
7253 } else if ( ! token ) {
73- sendJsonResponse ( 400 , { success : false , error : "Missing token in callback" } )
74- res . on ( "close" , ( ) => {
54+ const errorUrl = new URL ( `${ AUTH_BASE_URL } /cli/sign-in?error=missing-token` )
55+ errorUrl . searchParams . set ( "message" , "Missing token in callback" )
56+ res . writeHead ( 302 , { Location : errorUrl . toString ( ) } )
57+ res . end ( ( ) => {
7558 server . close ( )
7659 reject ( new Error ( "Missing token in callback" ) )
7760 } )
7861 } else if ( receivedState !== state ) {
79- sendJsonResponse ( 400 , { success : false , error : "Invalid state parameter" } )
80- res . on ( "close" , ( ) => {
62+ const errorUrl = new URL ( `${ AUTH_BASE_URL } /cli/sign-in?error=invalid-state-parameter` )
63+ errorUrl . searchParams . set ( "message" , "Invalid state parameter" )
64+ res . writeHead ( 302 , { Location : errorUrl . toString ( ) } )
65+ res . end ( ( ) => {
8166 server . close ( )
8267 reject ( new Error ( "Invalid state parameter" ) )
8368 } )
8469 } else {
85- sendJsonResponse ( 200 , { success : true } )
86- res . on ( "close" , ( ) => {
70+ res . writeHead ( 302 , { Location : ` ${ AUTH_BASE_URL } /cli/sign-in?success= true` } )
71+ res . end ( ( ) => {
8772 server . close ( )
8873 resolve ( { token, state : receivedState } )
8974 } )
0 commit comments