1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-11-20 12:02:22 +03:00

storage: make the Clock a trait

This commit is contained in:
Quentin Gliech
2023-01-18 12:20:30 +01:00
parent 73a921cc30
commit 142fdbd45a
62 changed files with 261 additions and 212 deletions

View File

@@ -22,7 +22,7 @@ use mas_storage::{
CompatSsoLoginRepository,
},
user::{UserPasswordRepository, UserRepository},
Clock, Repository,
Clock, Repository, SystemClock,
};
use mas_storage_pg::PgRepository;
use serde::{Deserialize, Serialize};
@@ -254,7 +254,7 @@ pub(crate) async fn post(
async fn token_login(
repo: &mut PgRepository,
clock: &Clock,
clock: &SystemClock,
token: &str,
) -> Result<(CompatSession, User), RouteError> {
let login = repo

View File

@@ -31,7 +31,7 @@ use mas_keystore::Encrypter;
use mas_router::{CompatLoginSsoAction, PostAuthAction, Route};
use mas_storage::{
compat::{CompatSessionRepository, CompatSsoLoginRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{CompatSsoContext, ErrorContext, TemplateContext, Templates};

View File

@@ -18,7 +18,7 @@ use hyper::StatusCode;
use mas_data_model::TokenType;
use mas_storage::{
compat::{CompatAccessTokenRepository, CompatSessionRepository},
Clock, Repository,
Clock, Repository, SystemClock,
};
use mas_storage_pg::PgRepository;
use sqlx::PgPool;
@@ -72,7 +72,7 @@ pub(crate) async fn post(
State(pool): State<PgPool>,
maybe_authorization: Option<TypedHeader<Authorization<Bearer>>>,
) -> Result<impl IntoResponse, RouteError> {
let clock = Clock::default();
let clock = SystemClock::default();
let mut repo = PgRepository::from_pool(&pool).await?;
let TypedHeader(authorization) = maybe_authorization.ok_or(RouteError::MissingAuthorization)?;

View File

@@ -18,7 +18,7 @@ use hyper::StatusCode;
use mas_data_model::{TokenFormatError, TokenType};
use mas_storage::{
compat::{CompatAccessTokenRepository, CompatRefreshTokenRepository, CompatSessionRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use serde::{Deserialize, Serialize};

View File

@@ -409,8 +409,8 @@ async fn test_state(pool: PgPool) -> Result<AppState, anyhow::Error> {
}
// XXX: that should be moved somewhere else
fn clock_and_rng() -> (mas_storage::Clock, rand_chacha::ChaChaRng) {
let clock = mas_storage::Clock::default();
fn clock_and_rng() -> (mas_storage::SystemClock, rand_chacha::ChaChaRng) {
let clock = mas_storage::SystemClock::default();
// This rng is used to source the local rng
#[allow(clippy::disallowed_methods)]

View File

@@ -30,7 +30,7 @@ use mas_policy::PolicyFactory;
use mas_router::{PostAuthAction, Route};
use mas_storage::{
oauth2::{OAuth2AuthorizationGrantRepository, OAuth2ClientRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{ConsentContext, PolicyViolationContext, TemplateContext, Templates};

View File

@@ -25,7 +25,7 @@ use mas_storage::{
compat::{CompatAccessTokenRepository, CompatRefreshTokenRepository, CompatSessionRepository},
oauth2::{OAuth2AccessTokenRepository, OAuth2RefreshTokenRepository, OAuth2SessionRepository},
user::{BrowserSessionRepository, UserRepository},
Clock, Repository,
Clock, Repository, SystemClock,
};
use mas_storage_pg::PgRepository;
use oauth2_types::{
@@ -130,7 +130,7 @@ pub(crate) async fn post(
State(encrypter): State<Encrypter>,
client_authorization: ClientAuthorization<IntrospectionRequest>,
) -> Result<impl IntoResponse, RouteError> {
let clock = Clock::default();
let clock = SystemClock::default();
let mut repo = PgRepository::from_pool(&pool).await?;
let client = client_authorization

View File

@@ -37,7 +37,7 @@ use mas_storage::{
OAuth2RefreshTokenRepository, OAuth2SessionRepository,
},
user::BrowserSessionRepository,
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use oauth2_types::{

View File

@@ -31,7 +31,7 @@ use mas_router::UrlBuilder;
use mas_storage::{
oauth2::OAuth2ClientRepository,
user::{BrowserSessionRepository, UserEmailRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use oauth2_types::scope;

View File

@@ -24,7 +24,7 @@ use mas_oidc_client::requests::authorization_code::AuthorizationRequestData;
use mas_router::UrlBuilder;
use mas_storage::{
upstream_oauth2::{UpstreamOAuthProviderRepository, UpstreamOAuthSessionRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use sqlx::PgPool;

View File

@@ -30,7 +30,7 @@ use mas_storage::{
UpstreamOAuthLinkRepository, UpstreamOAuthProviderRepository,
UpstreamOAuthSessionRepository,
},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use oauth2_types::errors::ClientErrorCode;

View File

@@ -27,7 +27,7 @@ use mas_keystore::Encrypter;
use mas_storage::{
upstream_oauth2::{UpstreamOAuthLinkRepository, UpstreamOAuthSessionRepository},
user::{BrowserSessionRepository, UserRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{

View File

@@ -24,7 +24,7 @@ use mas_axum_utils::{
use mas_email::Mailer;
use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{user::UserEmailRepository, Repository};
use mas_storage::{user::UserEmailRepository, Clock, Repository};
use mas_storage_pg::PgRepository;
use mas_templates::{EmailAddContext, TemplateContext, Templates};
use serde::Deserialize;

View File

@@ -71,7 +71,7 @@ pub(crate) async fn get(
async fn render(
rng: impl Rng + Send,
clock: &Clock,
clock: &impl Clock,
templates: Templates,
session: BrowserSession,
cookie_jar: PrivateCookieJar<Encrypter>,
@@ -94,7 +94,7 @@ async fn start_email_verification(
mailer: &Mailer,
repo: &mut impl Repository,
mut rng: impl Rng + Send,
clock: &Clock,
clock: &impl Clock,
user: &User,
user_email: UserEmail,
) -> anyhow::Result<()> {

View File

@@ -24,7 +24,7 @@ use mas_axum_utils::{
};
use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{user::UserEmailRepository, Clock, Repository};
use mas_storage::{user::UserEmailRepository, Clock, Repository, SystemClock};
use mas_storage_pg::PgRepository;
use mas_templates::{EmailVerificationPageContext, TemplateContext, Templates};
use serde::Deserialize;
@@ -89,7 +89,7 @@ pub(crate) async fn post(
Path(id): Path<Ulid>,
Form(form): Form<ProtectedForm<CodeForm>>,
) -> Result<Response, FancyError> {
let clock = Clock::default();
let clock = SystemClock::default();
let mut repo = PgRepository::from_pool(&pool).await?;
let form = cookie_jar.verify_form(clock.now(), form)?;

View File

@@ -25,7 +25,7 @@ use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{
user::{BrowserSessionRepository, UserEmailRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{AccountContext, TemplateContext, Templates};

View File

@@ -67,7 +67,7 @@ pub(crate) async fn get(
async fn render(
rng: impl Rng + Send,
clock: &Clock,
clock: &impl Clock,
templates: Templates,
session: BrowserSession,
cookie_jar: PrivateCookieJar<Encrypter>,

View File

@@ -20,6 +20,7 @@ use axum_extra::extract::PrivateCookieJar;
use mas_axum_utils::{csrf::CsrfExt, FancyError, SessionInfoExt};
use mas_keystore::Encrypter;
use mas_router::UrlBuilder;
use mas_storage::Clock;
use mas_storage_pg::PgRepository;
use mas_templates::{IndexContext, TemplateContext, Templates};
use sqlx::PgPool;

View File

@@ -167,7 +167,7 @@ async fn login(
password_manager: PasswordManager,
repo: &mut impl Repository,
mut rng: impl Rng + CryptoRng + Send,
clock: &Clock,
clock: &impl Clock,
username: &str,
password: &str,
) -> Result<BrowserSession, FormError> {

View File

@@ -23,7 +23,7 @@ use mas_axum_utils::{
};
use mas_keystore::Encrypter;
use mas_router::{PostAuthAction, Route};
use mas_storage::{user::BrowserSessionRepository, Clock, Repository};
use mas_storage::{user::BrowserSessionRepository, Clock, Repository, SystemClock};
use mas_storage_pg::PgRepository;
use sqlx::PgPool;
@@ -32,7 +32,7 @@ pub(crate) async fn post(
cookie_jar: PrivateCookieJar<Encrypter>,
Form(form): Form<ProtectedForm<Option<PostAuthAction>>>,
) -> Result<impl IntoResponse, FancyError> {
let clock = Clock::default();
let clock = SystemClock::default();
let mut repo = PgRepository::from_pool(&pool).await?;
let form = cookie_jar.verify_form(clock.now(), form)?;

View File

@@ -26,7 +26,7 @@ use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{
user::{BrowserSessionRepository, UserPasswordRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{ReauthContext, TemplateContext, Templates};

View File

@@ -33,7 +33,7 @@ use mas_policy::PolicyFactory;
use mas_router::Route;
use mas_storage::{
user::{BrowserSessionRepository, UserEmailRepository, UserPasswordRepository, UserRepository},
Repository,
Clock, Repository,
};
use mas_storage_pg::PgRepository;
use mas_templates::{