@@ -61,27 +61,26 @@ async def callback(
6161 Processes the callback URL and completes the login or connected account flow.
6262 Redirects the user to a post-login URL based on appState or a default.
6363 """
64- connect_code = request .query_params .get ("connect_code" )
65- if connect_code and config .mount_connected_account_routes :
66- state = request .query_params .get ("state" )
67- return await auth_client .complete_connect_account (
68- connect_code = connect_code ,
69- state = state ,
70- store_options = {"request" : request , "response" : response },
71- )
72-
7364 full_callback_url = str (request .url )
7465
7566 try :
76- session_data = await auth_client .complete_login (
77- full_callback_url ,
78- store_options = {"request" : request , "response" : response },
79- )
67+ if "connect_code" in request .query_params .keys () and config .mount_connected_account_routes :
68+ connect_complete_response = await auth_client .complete_connect_account (
69+ full_callback_url , store_options = {"request" : request , "response" : response })
70+
71+ app_state = connect_complete_response .app_state or {}
72+ else :
73+ session_data = await auth_client .complete_login (
74+ full_callback_url ,store_options = {"request" : request , "response" : response })
75+
76+ # Extract the returnTo URL from the appState if available.
77+ app_state = session_data .get ("app_state" , {})
8078 except Exception as e :
8179 raise HTTPException (status_code = 400 , detail = str (e ))
8280
81+
8382 # Extract the returnTo URL from the appState if available.
84- return_to = session_data . get ( " app_state" , {}) .get ("returnTo" )
83+ return_to = app_state .get ("returnTo" )
8584
8685 # Assuming config is stored on app.state
8786 default_redirect = auth_client .config .app_base_url
@@ -146,9 +145,12 @@ async def connect_account(
146145 Redirects the user to the Auth0 connect account URL.
147146 """
148147 authorization_params = {k : v for k , v in request .query_params .items () if k not in [
149- "connection" ]}
148+ "connection" , "returnTo" ]}
149+
150+ return_to = request .query_params .get ("returnTo" )
150151 connect_account_url = await auth_client .start_connect_account (
151152 connection = connection ,
153+ app_state = {"returnTo" : return_to } if return_to else None ,
152154 authorization_params = authorization_params ,
153155 store_options = {"request" : request , "response" : response },
154156 )
0 commit comments