diff --git a/crates/handlers/src/compat/login_sso_complete.rs b/crates/handlers/src/compat/login_sso_complete.rs index ba3dee13..54028746 100644 --- a/crates/handlers/src/compat/login_sso_complete.rs +++ b/crates/handlers/src/compat/login_sso_complete.rs @@ -63,7 +63,7 @@ pub async fn get( let (session_info, cookie_jar) = cookie_jar.session_info(); let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session @@ -126,7 +126,7 @@ pub async fn post( let (session_info, cookie_jar) = cookie_jar.session_info(); cookie_jar.verify_form(&clock, form)?; - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session diff --git a/crates/handlers/src/graphql.rs b/crates/handlers/src/graphql.rs index 2d1f7fcc..233c4690 100644 --- a/crates/handlers/src/graphql.rs +++ b/crates/handlers/src/graphql.rs @@ -67,7 +67,7 @@ pub async fn post( let content_type = content_type.map(|TypedHeader(h)| h.to_string()); let (session_info, _cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let mut request = async_graphql::http::receive_body( content_type, @@ -103,7 +103,7 @@ pub async fn get( RawQuery(query): RawQuery, ) -> Result { let (session_info, _cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let mut request = async_graphql::http::parse_query_string(&query.unwrap_or_default())?.data(Mutex::new(repo)); diff --git a/crates/handlers/src/oauth2/authorization/complete.rs b/crates/handlers/src/oauth2/authorization/complete.rs index 91121df9..6b6869da 100644 --- a/crates/handlers/src/oauth2/authorization/complete.rs +++ b/crates/handlers/src/oauth2/authorization/complete.rs @@ -86,7 +86,7 @@ pub(crate) async fn get( ) -> Result { let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let grant = repo .oauth2_authorization_grant() diff --git a/crates/handlers/src/oauth2/authorization/mod.rs b/crates/handlers/src/oauth2/authorization/mod.rs index 4ce10baa..1aa8ce64 100644 --- a/crates/handlers/src/oauth2/authorization/mod.rs +++ b/crates/handlers/src/oauth2/authorization/mod.rs @@ -167,7 +167,7 @@ pub(crate) async fn get( let templates = templates.clone(); let callback_destination = callback_destination.clone(); async move { - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let prompt = params.auth.prompt.as_deref().unwrap_or_default(); // Check if the request/request_uri/registration params are used. If so, reply diff --git a/crates/handlers/src/oauth2/consent.rs b/crates/handlers/src/oauth2/consent.rs index f365a9f3..ffaa6106 100644 --- a/crates/handlers/src/oauth2/consent.rs +++ b/crates/handlers/src/oauth2/consent.rs @@ -82,7 +82,7 @@ pub(crate) async fn get( ) -> Result { let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let grant = repo .oauth2_authorization_grant() @@ -138,7 +138,7 @@ pub(crate) async fn post( let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let grant = repo .oauth2_authorization_grant() diff --git a/crates/handlers/src/oauth2/introspection.rs b/crates/handlers/src/oauth2/introspection.rs index d0dcd26c..3b44c511 100644 --- a/crates/handlers/src/oauth2/introspection.rs +++ b/crates/handlers/src/oauth2/introspection.rs @@ -130,7 +130,7 @@ pub(crate) async fn post( ) -> Result { let client = client_authorization .credentials - .fetch(&mut *repo) + .fetch(&mut repo) .await .unwrap() .ok_or(RouteError::ClientNotFound)?; diff --git a/crates/handlers/src/oauth2/token.rs b/crates/handlers/src/oauth2/token.rs index 76943e7e..682813bf 100644 --- a/crates/handlers/src/oauth2/token.rs +++ b/crates/handlers/src/oauth2/token.rs @@ -168,7 +168,7 @@ pub(crate) async fn post( ) -> Result { let client = client_authorization .credentials - .fetch(&mut *repo) + .fetch(&mut repo) .await? .ok_or(RouteError::ClientNotFound)?; diff --git a/crates/handlers/src/oauth2/userinfo.rs b/crates/handlers/src/oauth2/userinfo.rs index e56dafbc..d2d27cd0 100644 --- a/crates/handlers/src/oauth2/userinfo.rs +++ b/crates/handlers/src/oauth2/userinfo.rs @@ -103,7 +103,7 @@ pub async fn get( State(key_store): State, user_authorization: UserAuthorization, ) -> Result { - let session = user_authorization.protected(&mut *repo, &clock).await?; + let session = user_authorization.protected(&mut repo, &clock).await?; let browser_session = repo .browser_session() diff --git a/crates/handlers/src/upstream_oauth2/link.rs b/crates/handlers/src/upstream_oauth2/link.rs index 89614dcb..30d678cf 100644 --- a/crates/handlers/src/upstream_oauth2/link.rs +++ b/crates/handlers/src/upstream_oauth2/link.rs @@ -128,7 +128,7 @@ pub(crate) async fn get( let (user_session_info, cookie_jar) = cookie_jar.session_info(); let (csrf_token, mut cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); - let maybe_user_session = user_session_info.load_session(&mut *repo).await?; + let maybe_user_session = user_session_info.load_session(&mut repo).await?; let render = match (maybe_user_session, link.user_id) { (Some(session), Some(user_id)) if session.user.id == user_id => { @@ -249,7 +249,7 @@ pub(crate) async fn post( } let (user_session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_user_session = user_session_info.load_session(&mut *repo).await?; + let maybe_user_session = user_session_info.load_session(&mut repo).await?; let session = match (maybe_user_session, link.user_id, form) { (Some(session), None, FormData::Link) => { diff --git a/crates/handlers/src/views/account/emails/add.rs b/crates/handlers/src/views/account/emails/add.rs index 7b89b2d8..e26c9cc1 100644 --- a/crates/handlers/src/views/account/emails/add.rs +++ b/crates/handlers/src/views/account/emails/add.rs @@ -46,7 +46,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session @@ -76,7 +76,7 @@ pub(crate) async fn post( let form = cookie_jar.verify_form(&clock, form)?; let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session @@ -98,7 +98,7 @@ pub(crate) async fn post( }; start_email_verification( &mailer, - &mut *repo, + &mut repo, &mut rng, &clock, &session.user, diff --git a/crates/handlers/src/views/account/emails/mod.rs b/crates/handlers/src/views/account/emails/mod.rs index 251e5adb..83038337 100644 --- a/crates/handlers/src/views/account/emails/mod.rs +++ b/crates/handlers/src/views/account/emails/mod.rs @@ -55,10 +55,10 @@ pub(crate) async fn get( ) -> Result { let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; if let Some(session) = maybe_session { - render(&mut rng, &clock, templates, session, cookie_jar, &mut *repo).await + render(&mut rng, &clock, templates, session, cookie_jar, &mut repo).await } else { let login = mas_router::Login::default(); Ok((cookie_jar, login.go()).into_response()) @@ -130,7 +130,7 @@ pub(crate) async fn post( ) -> Result { let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let mut session = if let Some(session) = maybe_session { session @@ -149,7 +149,7 @@ pub(crate) async fn post( .await?; let next = mas_router::AccountVerifyEmail::new(email.id); - start_email_verification(&mailer, &mut *repo, &mut rng, &clock, &session.user, email) + start_email_verification(&mailer, &mut repo, &mut rng, &clock, &session.user, email) .await?; repo.save().await?; return Ok((cookie_jar, next.go()).into_response()); @@ -168,7 +168,7 @@ pub(crate) async fn post( } let next = mas_router::AccountVerifyEmail::new(email.id); - start_email_verification(&mailer, &mut *repo, &mut rng, &clock, &session.user, email) + start_email_verification(&mailer, &mut repo, &mut rng, &clock, &session.user, email) .await?; repo.save().await?; return Ok((cookie_jar, next.go()).into_response()); @@ -211,7 +211,7 @@ pub(crate) async fn post( templates.clone(), session, cookie_jar, - &mut *repo, + &mut repo, ) .await?; diff --git a/crates/handlers/src/views/account/emails/verify.rs b/crates/handlers/src/views/account/emails/verify.rs index 6a701b50..d7f074b8 100644 --- a/crates/handlers/src/views/account/emails/verify.rs +++ b/crates/handlers/src/views/account/emails/verify.rs @@ -48,7 +48,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session @@ -90,7 +90,7 @@ pub(crate) async fn post( let form = cookie_jar.verify_form(&clock, form)?; let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session diff --git a/crates/handlers/src/views/account/mod.rs b/crates/handlers/src/views/account/mod.rs index 8860c43c..162b7899 100644 --- a/crates/handlers/src/views/account/mod.rs +++ b/crates/handlers/src/views/account/mod.rs @@ -39,7 +39,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session diff --git a/crates/handlers/src/views/account/password.rs b/crates/handlers/src/views/account/password.rs index ddc47779..d9e02610 100644 --- a/crates/handlers/src/views/account/password.rs +++ b/crates/handlers/src/views/account/password.rs @@ -52,7 +52,7 @@ pub(crate) async fn get( ) -> Result { let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; if let Some(session) = maybe_session { render(&mut rng, &clock, templates, session, cookie_jar).await @@ -93,7 +93,7 @@ pub(crate) async fn post( let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session diff --git a/crates/handlers/src/views/index.rs b/crates/handlers/src/views/index.rs index 0cfe0d05..7b4be7df 100644 --- a/crates/handlers/src/views/index.rs +++ b/crates/handlers/src/views/index.rs @@ -33,7 +33,7 @@ pub async fn get( ) -> Result { let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let session = session_info.load_session(&mut *repo).await?; + let session = session_info.load_session(&mut repo).await?; let ctx = IndexContext::new(url_builder.oidc_discovery()) .maybe_with_session(session) diff --git a/crates/handlers/src/views/login.rs b/crates/handlers/src/views/login.rs index 4f9ecfd8..2836eee3 100644 --- a/crates/handlers/src/views/login.rs +++ b/crates/handlers/src/views/login.rs @@ -59,7 +59,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; if maybe_session.is_some() { let reply = query.go_next(); @@ -70,7 +70,7 @@ pub(crate) async fn get( LoginContext::default().with_upstrem_providers(providers), query, csrf_token, - &mut *repo, + &mut repo, &templates, ) .await?; @@ -116,7 +116,7 @@ pub(crate) async fn post( .with_upstrem_providers(providers), query, csrf_token, - &mut *repo, + &mut repo, &templates, ) .await?; @@ -126,7 +126,7 @@ pub(crate) async fn post( match login( password_manager, - &mut *repo, + &mut repo, rng, &clock, &form.username, @@ -148,7 +148,7 @@ pub(crate) async fn post( LoginContext::default().with_form_state(state), query, csrf_token, - &mut *repo, + &mut repo, &templates, ) .await?; diff --git a/crates/handlers/src/views/logout.rs b/crates/handlers/src/views/logout.rs index 189331fd..9b0f3602 100644 --- a/crates/handlers/src/views/logout.rs +++ b/crates/handlers/src/views/logout.rs @@ -32,7 +32,7 @@ pub(crate) async fn post( let (session_info, mut cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; if let Some(session) = maybe_session { repo.browser_session().finish(&clock, session).await?; diff --git a/crates/handlers/src/views/reauth.rs b/crates/handlers/src/views/reauth.rs index 2750711c..12f205d6 100644 --- a/crates/handlers/src/views/reauth.rs +++ b/crates/handlers/src/views/reauth.rs @@ -51,7 +51,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session @@ -63,7 +63,7 @@ pub(crate) async fn get( }; let ctx = ReauthContext::default(); - let next = query.load_context(&mut *repo).await?; + let next = query.load_context(&mut repo).await?; let ctx = if let Some(next) = next { ctx.with_post_action(next) } else { @@ -89,7 +89,7 @@ pub(crate) async fn post( let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; let session = if let Some(session) = maybe_session { session diff --git a/crates/handlers/src/views/register.rs b/crates/handlers/src/views/register.rs index 467352af..ad1ff378 100644 --- a/crates/handlers/src/views/register.rs +++ b/crates/handlers/src/views/register.rs @@ -69,7 +69,7 @@ pub(crate) async fn get( let (csrf_token, cookie_jar) = cookie_jar.csrf_token(&clock, &mut rng); let (session_info, cookie_jar) = cookie_jar.session_info(); - let maybe_session = session_info.load_session(&mut *repo).await?; + let maybe_session = session_info.load_session(&mut repo).await?; if maybe_session.is_some() { let reply = query.go_next(); @@ -79,7 +79,7 @@ pub(crate) async fn get( RegisterContext::default(), query, csrf_token, - &mut *repo, + &mut repo, &templates, ) .await?; @@ -174,7 +174,7 @@ pub(crate) async fn post( RegisterContext::default().with_form_state(state), query, csrf_token, - &mut *repo, + &mut repo, &templates, ) .await?; diff --git a/crates/storage/src/repository.rs b/crates/storage/src/repository.rs index 3da64a8c..d6772b9a 100644 --- a/crates/storage/src/repository.rs +++ b/crates/storage/src/repository.rs @@ -265,3 +265,115 @@ where )) } } + +impl Repository for Box { + type Error = R::Error; + + fn save(self: Box) -> BoxFuture<'static, Result<(), Self::Error>> + where + Self: Sized, + { + // This shouldn't be callable? + unimplemented!() + } + + fn cancel(self: Box) -> BoxFuture<'static, Result<(), Self::Error>> + where + Self: Sized, + { + // This shouldn't be callable? + unimplemented!() + } + + fn upstream_oauth_link<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).upstream_oauth_link() + } + + fn upstream_oauth_provider<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).upstream_oauth_provider() + } + + fn upstream_oauth_session<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).upstream_oauth_session() + } + + fn user<'c>(&'c mut self) -> Box + 'c> { + (**self).user() + } + + fn user_email<'c>(&'c mut self) -> Box + 'c> { + (**self).user_email() + } + + fn user_password<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).user_password() + } + + fn browser_session<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).browser_session() + } + + fn oauth2_client<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).oauth2_client() + } + + fn oauth2_authorization_grant<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).oauth2_authorization_grant() + } + + fn oauth2_session<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).oauth2_session() + } + + fn oauth2_access_token<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).oauth2_access_token() + } + + fn oauth2_refresh_token<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).oauth2_refresh_token() + } + + fn compat_session<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).compat_session() + } + + fn compat_sso_login<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).compat_sso_login() + } + + fn compat_access_token<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).compat_access_token() + } + + fn compat_refresh_token<'c>( + &'c mut self, + ) -> Box + 'c> { + (**self).compat_refresh_token() + } +}