You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-08-09 04:22:45 +03:00
storage: impl Repository for Box<impl Repository + ?Sized>
This commit is contained in:
@@ -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
|
||||
|
@@ -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<impl IntoResponse, FancyError> {
|
||||
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));
|
||||
|
@@ -86,7 +86,7 @@ pub(crate) async fn get(
|
||||
) -> Result<Response, RouteError> {
|
||||
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()
|
||||
|
@@ -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
|
||||
|
@@ -82,7 +82,7 @@ pub(crate) async fn get(
|
||||
) -> Result<Response, RouteError> {
|
||||
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()
|
||||
|
@@ -130,7 +130,7 @@ pub(crate) async fn post(
|
||||
) -> Result<impl IntoResponse, RouteError> {
|
||||
let client = client_authorization
|
||||
.credentials
|
||||
.fetch(&mut *repo)
|
||||
.fetch(&mut repo)
|
||||
.await
|
||||
.unwrap()
|
||||
.ok_or(RouteError::ClientNotFound)?;
|
||||
|
@@ -168,7 +168,7 @@ pub(crate) async fn post(
|
||||
) -> Result<impl IntoResponse, RouteError> {
|
||||
let client = client_authorization
|
||||
.credentials
|
||||
.fetch(&mut *repo)
|
||||
.fetch(&mut repo)
|
||||
.await?
|
||||
.ok_or(RouteError::ClientNotFound)?;
|
||||
|
||||
|
@@ -103,7 +103,7 @@ pub async fn get(
|
||||
State(key_store): State<Keystore>,
|
||||
user_authorization: UserAuthorization,
|
||||
) -> Result<Response, RouteError> {
|
||||
let session = user_authorization.protected(&mut *repo, &clock).await?;
|
||||
let session = user_authorization.protected(&mut repo, &clock).await?;
|
||||
|
||||
let browser_session = repo
|
||||
.browser_session()
|
||||
|
@@ -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) => {
|
||||
|
@@ -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,
|
||||
|
@@ -55,10 +55,10 @@ pub(crate) async fn get(
|
||||
) -> Result<Response, FancyError> {
|
||||
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<Response, FancyError> {
|
||||
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?;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -52,7 +52,7 @@ pub(crate) async fn get(
|
||||
) -> Result<Response, FancyError> {
|
||||
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
|
||||
|
@@ -33,7 +33,7 @@ pub async fn get(
|
||||
) -> Result<impl IntoResponse, FancyError> {
|
||||
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)
|
||||
|
@@ -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?;
|
||||
|
@@ -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?;
|
||||
|
@@ -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
|
||||
|
@@ -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?;
|
||||
|
@@ -265,3 +265,115 @@ where
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Repository + ?Sized> Repository for Box<R> {
|
||||
type Error = R::Error;
|
||||
|
||||
fn save(self: Box<Self>) -> BoxFuture<'static, Result<(), Self::Error>>
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
// This shouldn't be callable?
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn cancel(self: Box<Self>) -> BoxFuture<'static, Result<(), Self::Error>>
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
// This shouldn't be callable?
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn upstream_oauth_link<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn UpstreamOAuthLinkRepository<Error = Self::Error> + 'c> {
|
||||
(**self).upstream_oauth_link()
|
||||
}
|
||||
|
||||
fn upstream_oauth_provider<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn UpstreamOAuthProviderRepository<Error = Self::Error> + 'c> {
|
||||
(**self).upstream_oauth_provider()
|
||||
}
|
||||
|
||||
fn upstream_oauth_session<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn UpstreamOAuthSessionRepository<Error = Self::Error> + 'c> {
|
||||
(**self).upstream_oauth_session()
|
||||
}
|
||||
|
||||
fn user<'c>(&'c mut self) -> Box<dyn UserRepository<Error = Self::Error> + 'c> {
|
||||
(**self).user()
|
||||
}
|
||||
|
||||
fn user_email<'c>(&'c mut self) -> Box<dyn UserEmailRepository<Error = Self::Error> + 'c> {
|
||||
(**self).user_email()
|
||||
}
|
||||
|
||||
fn user_password<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn UserPasswordRepository<Error = Self::Error> + 'c> {
|
||||
(**self).user_password()
|
||||
}
|
||||
|
||||
fn browser_session<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn BrowserSessionRepository<Error = Self::Error> + 'c> {
|
||||
(**self).browser_session()
|
||||
}
|
||||
|
||||
fn oauth2_client<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn OAuth2ClientRepository<Error = Self::Error> + 'c> {
|
||||
(**self).oauth2_client()
|
||||
}
|
||||
|
||||
fn oauth2_authorization_grant<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn OAuth2AuthorizationGrantRepository<Error = Self::Error> + 'c> {
|
||||
(**self).oauth2_authorization_grant()
|
||||
}
|
||||
|
||||
fn oauth2_session<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn OAuth2SessionRepository<Error = Self::Error> + 'c> {
|
||||
(**self).oauth2_session()
|
||||
}
|
||||
|
||||
fn oauth2_access_token<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn OAuth2AccessTokenRepository<Error = Self::Error> + 'c> {
|
||||
(**self).oauth2_access_token()
|
||||
}
|
||||
|
||||
fn oauth2_refresh_token<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn OAuth2RefreshTokenRepository<Error = Self::Error> + 'c> {
|
||||
(**self).oauth2_refresh_token()
|
||||
}
|
||||
|
||||
fn compat_session<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn CompatSessionRepository<Error = Self::Error> + 'c> {
|
||||
(**self).compat_session()
|
||||
}
|
||||
|
||||
fn compat_sso_login<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn CompatSsoLoginRepository<Error = Self::Error> + 'c> {
|
||||
(**self).compat_sso_login()
|
||||
}
|
||||
|
||||
fn compat_access_token<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn CompatAccessTokenRepository<Error = Self::Error> + 'c> {
|
||||
(**self).compat_access_token()
|
||||
}
|
||||
|
||||
fn compat_refresh_token<'c>(
|
||||
&'c mut self,
|
||||
) -> Box<dyn CompatRefreshTokenRepository<Error = Self::Error> + 'c> {
|
||||
(**self).compat_refresh_token()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user