@@ -23,7 +23,7 @@ use actix_web::{
2323 Error , HttpMessage , HttpRequest , Route ,
2424 dev:: { Service , ServiceRequest , ServiceResponse , Transform , forward_ready} ,
2525 error:: { ErrorBadRequest , ErrorForbidden , ErrorUnauthorized } ,
26- http:: header:: { self , HeaderName , HeaderValue } ,
26+ http:: header:: { self , HeaderMap , HeaderName , HeaderValue } ,
2727} ;
2828use argon2:: { Argon2 , PasswordHash , PasswordVerifier } ;
2929use chrono:: { Duration , TimeDelta , Utc } ;
@@ -194,7 +194,7 @@ where
194194 }
195195
196196 let auth_result: Result < _ , Error > = ( self . auth_method ) ( & mut req, self . action ) ;
197-
197+ let headers = req . headers ( ) . clone ( ) ;
198198 let fut = self . service . call ( req) ;
199199 Box :: pin ( async move {
200200 let Ok ( key) = key else {
@@ -209,7 +209,7 @@ where
209209
210210 // if session is expired, refresh token
211211 if sessions ( ) . is_session_expired ( & key) {
212- refresh_token ( user_and_tenant_id, & key) . await ?;
212+ refresh_token ( user_and_tenant_id, & key, headers ) . await ?;
213213 }
214214
215215 match auth_result? {
@@ -296,6 +296,7 @@ fn get_user_and_tenant(
296296pub async fn refresh_token (
297297 user_and_tenant_id : Result < ( Result < String , RBACError > , Option < String > ) , RBACError > ,
298298 key : & SessionKey ,
299+ headers : HeaderMap ,
299300) -> Result < ( ) , Error > {
300301 let oidc_client = OIDC_CLIENT . get ( ) ;
301302
@@ -320,7 +321,7 @@ pub async fn refresh_token(
320321 let refreshed_token = match client
321322 . read ( )
322323 . await
323- . refresh_token ( & oauth_data, Some ( PARSEABLE . options . scope . as_str ( ) ) )
324+ . refresh_token ( & oauth_data, Some ( PARSEABLE . options . scope . as_str ( ) ) , headers )
324325 . await
325326 {
326327 Ok ( bearer) => bearer,
@@ -570,6 +571,10 @@ where
570571 header:: COOKIE ,
571572 HeaderValue :: from_str ( & format ! ( "session={}" , id) ) . unwrap ( ) ,
572573 ) ;
574+
575+ // remove basic auth header
576+ req. headers_mut ( ) . remove ( header:: AUTHORIZATION ) ;
577+
573578 let session = SessionKey :: SessionId ( id) ;
574579 req. extensions_mut ( ) . insert ( session. clone ( ) ) ;
575580 Users . new_session ( & user, session, TimeDelta :: seconds ( 20 ) ) ;
0 commit comments