@@ -323,21 +323,18 @@ enum MiddlewareResponse {
323323 Respond ( ServiceResponse ) ,
324324}
325325
326- async fn handle_request (
327- oidc_state : & OidcState ,
328- request : ServiceRequest ,
329- ) -> actix_web:: Result < MiddlewareResponse > {
326+ async fn handle_request ( oidc_state : & OidcState , request : ServiceRequest ) -> MiddlewareResponse {
330327 log:: trace!( "Started OIDC middleware request handling" ) ;
331328 oidc_state. refresh_if_expired ( & request) . await ;
332329 match get_authenticated_user_info ( oidc_state, & request) . await {
333330 Ok ( Some ( claims) ) => {
334- if request. path ( ) != SQLPAGE_REDIRECT_URI {
331+ if request. path ( ) == SQLPAGE_REDIRECT_URI {
332+ MiddlewareResponse :: Respond ( handle_authenticated_oidc_callback ( request) )
333+ } else {
335334 log:: trace!( "Storing authenticated user info in request extensions: {claims:?}" ) ;
336335 request. extensions_mut ( ) . insert ( claims) ;
337- return Ok ( MiddlewareResponse :: Forward ( request) ) ;
336+ MiddlewareResponse :: Forward ( request)
338337 }
339- let response = handle_authenticated_oidc_callback ( request) ;
340- Ok ( MiddlewareResponse :: Respond ( response) )
341338 }
342339 Ok ( None ) => {
343340 log:: trace!( "No authenticated user found" ) ;
@@ -354,39 +351,36 @@ async fn handle_request(
354351async fn handle_unauthenticated_request (
355352 oidc_state : & OidcState ,
356353 request : ServiceRequest ,
357- ) -> actix_web :: Result < MiddlewareResponse > {
354+ ) -> MiddlewareResponse {
358355 log:: debug!( "Handling unauthenticated request to {}" , request. path( ) ) ;
359356 if request. path ( ) == SQLPAGE_REDIRECT_URI {
360357 log:: debug!( "The request is the OIDC callback" ) ;
361- let response = handle_oidc_callback ( oidc_state, request) . await ? ;
362- return Ok ( MiddlewareResponse :: Respond ( response) ) ;
358+ let response = handle_oidc_callback ( oidc_state, request) . await ;
359+ return MiddlewareResponse :: Respond ( response) ;
363360 }
364361
365362 if oidc_state. config . is_public_path ( request. path ( ) ) {
366- return Ok ( MiddlewareResponse :: Forward ( request) ) ;
363+ return MiddlewareResponse :: Forward ( request) ;
367364 }
368365
369366 log:: debug!( "Redirecting to OIDC provider" ) ;
370367
371368 let initial_url = request. uri ( ) . to_string ( ) ;
372369 let response = build_auth_provider_redirect_response ( oidc_state, initial_url) . await ;
373- Ok ( MiddlewareResponse :: Respond ( request. into_response ( response) ) )
370+ MiddlewareResponse :: Respond ( request. into_response ( response) )
374371}
375372
376- async fn handle_oidc_callback (
377- oidc_state : & OidcState ,
378- request : ServiceRequest ,
379- ) -> actix_web:: Result < ServiceResponse > {
373+ async fn handle_oidc_callback ( oidc_state : & OidcState , request : ServiceRequest ) -> ServiceResponse {
380374 let query_string = request. query_string ( ) ;
381375 match process_oidc_callback ( oidc_state, query_string, & request) . await {
382- Ok ( response) => Ok ( request. into_response ( response) ) ,
376+ Ok ( response) => request. into_response ( response) ,
383377 Err ( e) => {
384378 let redirect_url =
385379 get_state_from_cookie ( & request) . map_or_else ( |_| "/" . into ( ) , |s| s. initial_url ) ;
386380 log:: error!( "Failed to process OIDC callback. Refreshing oidc provider metadata, then redirecting to {redirect_url}: {e:#}" ) ;
387381 oidc_state. refresh_on_error ( & request) . await ;
388382 let resp = build_auth_provider_redirect_response ( oidc_state, redirect_url) . await ;
389- Ok ( request. into_response ( resp) )
383+ request. into_response ( resp)
390384 }
391385 }
392386}
@@ -417,9 +411,8 @@ where
417411 let oidc_state = Arc :: clone ( & self . oidc_state ) ;
418412 Box :: pin ( async move {
419413 match handle_request ( & oidc_state, request) . await {
420- Ok ( MiddlewareResponse :: Respond ( response) ) => Ok ( response) ,
421- Ok ( MiddlewareResponse :: Forward ( request) ) => srv. call ( request) . await ,
422- Err ( err) => Err ( err) ,
414+ MiddlewareResponse :: Respond ( response) => Ok ( response) ,
415+ MiddlewareResponse :: Forward ( request) => srv. call ( request) . await ,
423416 }
424417 } )
425418 }
0 commit comments