Skip to content

Commit 0ab84c5

Browse files
committed
coderabbit suggestions
1 parent 4646f92 commit 0ab84c5

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

src/handlers/http/modal/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ pub trait ParseableServer {
119119
.await?;
120120
OIDC_CLIENT
121121
.get_or_init(|| Some(Arc::new(RwLock::new(GlobalClient::new(client.clone())))));
122+
} else {
123+
OIDC_CLIENT.get_or_init(|| None);
122124
}
123125

124126
// get the ssl stuff

src/handlers/http/oidc.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use actix_web::{
2222
HttpRequest, HttpResponse,
2323
cookie::{Cookie, SameSite, time},
2424
http::header::{self, ContentType},
25-
web::{self, Data},
25+
web::{self},
2626
};
2727
use chrono::{Duration, TimeDelta};
2828
use http::StatusCode;
@@ -149,13 +149,11 @@ pub async fn login(
149149
}
150150

151151
pub async fn logout(req: HttpRequest, query: web::Query<RedirectAfterLogin>) -> HttpResponse {
152-
let oidc_client = match req.app_data::<Data<Option<DiscoveredClient>>>() {
153-
Some(client) => {
154-
let c = client.clone().into_inner();
155-
c.as_ref().clone()
156-
}
152+
let oidc_client = match OIDC_CLIENT.get() {
153+
Some(c) => Some(c.as_ref().unwrap().read().await.client().clone()),
157154
None => None,
158155
};
156+
159157
let Some(session) = extract_session_key_from_req(&req).ok() else {
160158
return redirect_to_client(query.redirect.as_str(), None);
161159
};
@@ -418,12 +416,8 @@ pub async fn request_token(
418416
.unwrap()
419417
.connect(&format!("{API_BASE_PATH}/{API_VERSION}/o/code"))
420418
.await?;
421-
let mut token: Token<Claims> = new_client.request_token(&login_query.code).await?.into();
422-
let id_token = if let Some(token) = token.id_token.as_mut() {
423-
token
424-
} else {
425-
return Err(anyhow::anyhow!("No id_token provided"));
426-
};
419+
420+
// Reuse the already-obtained token, just decode with new client's JWKS
427421
new_client.decode_token(id_token)?;
428422
new_client.validate_token(id_token, None, None)?;
429423
let claims = id_token.payload().expect("payload is decoded").clone();
@@ -437,7 +431,7 @@ pub async fn request_token(
437431
oidc_client.write().await.set(new_client);
438432
return Ok((claims, userinfo, bearer));
439433
}
440-
old_client.decode_token(id_token)?;
434+
441435
old_client.validate_token(id_token, None, None)?;
442436
let claims = id_token.payload().expect("payload is decoded").clone();
443437

0 commit comments

Comments
 (0)