diff options
Diffstat (limited to 'src/login/extract/login.rs')
| -rw-r--r-- | src/login/extract/login.rs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/login/extract/login.rs b/src/login/extract/login.rs index da0a90e..4155ec2 100644 --- a/src/login/extract/login.rs +++ b/src/login/extract/login.rs @@ -3,9 +3,9 @@ use axum::{ http::{request::Parts, StatusCode}, response::{IntoResponse, Response}, }; -use sqlx::sqlite::SqlitePool; use crate::{ + app::App, clock::RequestedAt, error::InternalError, login::{ @@ -15,13 +15,10 @@ use crate::{ }; #[async_trait::async_trait] -impl FromRequestParts<SqlitePool> for Login { +impl FromRequestParts<App> for Login { type Rejection = LoginError<InternalError>; - async fn from_request_parts( - parts: &mut Parts, - state: &SqlitePool, - ) -> Result<Self, Self::Rejection> { + async fn from_request_parts(parts: &mut Parts, state: &App) -> Result<Self, Self::Rejection> { // After Rust 1.82 (and #[feature(min_exhaustive_patterns)] lands on // stable), the following can be replaced: // @@ -31,8 +28,8 @@ impl FromRequestParts<SqlitePool> for Login { let secret = identity_token.secret().ok_or(LoginError::Forbidden)?; - let db = State::<SqlitePool>::from_request_parts(parts, state).await?; - let mut tx = db.begin().await?; + let app = State::<App>::from_request_parts(parts, state).await?; + let mut tx = app.db.begin().await?; tx.tokens().expire(requested_at).await?; let login = tx.tokens().validate(secret, requested_at).await?; tx.commit().await?; |
