From 3144d87c3a2ae9f6560bacc9a02b14aa43532b1f Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Mon, 11 Sep 2023 17:42:19 +0200 Subject: [PATCH] refactor(oidc): put the `OidcContext` in the `AuthCtx` --- crates/matrix-sdk/src/authentication.rs | 5 ++++- crates/matrix-sdk/src/client/builder.rs | 4 ++-- crates/matrix-sdk/src/client/mod.rs | 10 ---------- crates/matrix-sdk/src/oidc/mod.rs | 2 +- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/crates/matrix-sdk/src/authentication.rs b/crates/matrix-sdk/src/authentication.rs index 6c938d262..aefd4272b 100644 --- a/crates/matrix-sdk/src/authentication.rs +++ b/crates/matrix-sdk/src/authentication.rs @@ -21,7 +21,7 @@ use ruma::api::client::discovery::discover_homeserver::AuthenticationServerInfo; use tokio::sync::{broadcast, Mutex, OnceCell}; #[cfg(feature = "experimental-oidc")] -use crate::oidc::{self, Oidc, OidcAuthData}; +use crate::oidc::{self, Oidc, OidcAuthData, OidcContext}; use crate::{ matrix_auth::{self, MatrixAuth, MatrixAuthData}, Client, RefreshTokenError, SessionChange, @@ -51,6 +51,9 @@ pub(crate) struct AuthCtx { #[cfg_attr(not(feature = "experimental-oidc"), allow(dead_code))] pub(crate) authentication_server_info: Option, + #[cfg(feature = "experimental-oidc")] + pub(crate) oidc_context: OidcContext, + /// Whether to try to refresh the access token automatically when an /// `M_UNKNOWN_TOKEN` error is encountered. pub(crate) handle_refresh_tokens: bool, diff --git a/crates/matrix-sdk/src/client/builder.rs b/crates/matrix-sdk/src/client/builder.rs index d2a84427e..6d85c1766 100644 --- a/crates/matrix-sdk/src/client/builder.rs +++ b/crates/matrix-sdk/src/client/builder.rs @@ -433,6 +433,8 @@ impl ClientBuilder { auth_data: OnceCell::default(), reload_session_callback: OnceCell::default(), save_session_callback: OnceCell::default(), + #[cfg(feature = "experimental-oidc")] + oidc_context: OidcContext::default(), }); let inner = Arc::new(ClientInner::new( @@ -444,8 +446,6 @@ impl ClientBuilder { base_client, self.server_versions, self.respect_login_well_known, - #[cfg(feature = "experimental-oidc")] - Arc::new(OidcContext::default()), )); debug!("Done building the Client"); diff --git a/crates/matrix-sdk/src/client/mod.rs b/crates/matrix-sdk/src/client/mod.rs index 9b5f1be13..672203014 100644 --- a/crates/matrix-sdk/src/client/mod.rs +++ b/crates/matrix-sdk/src/client/mod.rs @@ -71,8 +71,6 @@ use url::Url; #[cfg(feature = "experimental-oidc")] use crate::oidc::Oidc; -#[cfg(feature = "experimental-oidc")] -use crate::oidc::OidcContext; use crate::{ authentication::{AuthCtx, AuthData, ReloadSessionCallback, SaveSessionCallback}, config::RequestConfig, @@ -185,9 +183,6 @@ pub(crate) struct ClientInner { /// store. pub(crate) sync_beat: event_listener::Event, - #[cfg(feature = "experimental-oidc")] - pub(crate) oidc_context: Arc, - #[cfg(feature = "e2e-encryption")] pub(crate) cross_process_crypto_store_lock: OnceCell>, @@ -229,7 +224,6 @@ impl ClientInner { base_client: BaseClient, server_versions: Option>, respect_login_well_known: bool, - #[cfg(feature = "experimental-oidc")] oidc_context: Arc, ) -> Self { Self { homeserver: RwLock::new(homeserver), @@ -256,8 +250,6 @@ impl ClientInner { cross_process_crypto_store_lock: OnceCell::new(), #[cfg(feature = "e2e-encryption")] crypto_store_generation: Arc::new(Mutex::new(None)), - #[cfg(feature = "experimental-oidc")] - oidc_context, } } } @@ -1940,8 +1932,6 @@ impl Client { self.inner.base_client.clone_with_in_memory_state_store(), self.inner.server_versions.get().cloned(), self.inner.respect_login_well_known, - #[cfg(feature = "experimental-oidc")] - self.inner.oidc_context.clone(), )), }; diff --git a/crates/matrix-sdk/src/oidc/mod.rs b/crates/matrix-sdk/src/oidc/mod.rs index 2526c6a78..89cd76224 100644 --- a/crates/matrix-sdk/src/oidc/mod.rs +++ b/crates/matrix-sdk/src/oidc/mod.rs @@ -264,7 +264,7 @@ impl Oidc { } fn ctx(&self) -> &OidcContext { - &self.client.inner.oidc_context + &self.client.inner.auth_ctx.oidc_context } /// Enable a cross-process store lock on the state store, to coordinate