summaryrefslogtreecommitdiff
path: root/src/login/extract/login.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/login/extract/login.rs')
-rw-r--r--src/login/extract/login.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/login/extract/login.rs b/src/login/extract/login.rs
index f49933a..ce820f1 100644
--- a/src/login/extract/login.rs
+++ b/src/login/extract/login.rs
@@ -6,6 +6,7 @@ use axum::{
use sqlx::sqlite::SqlitePool;
use crate::{
+ clock::RequestedAt,
error::InternalError,
login::{
extract::IdentityToken,
@@ -22,11 +23,13 @@ impl FromRequestParts<SqlitePool> for Login {
state: &SqlitePool,
) -> Result<Self, Self::Rejection> {
let identity_token = IdentityToken::from_request_parts(parts, state).await?;
+ let requested_at = RequestedAt::from_request_parts(parts, state).await?;
let token = identity_token.token().ok_or(LoginError::Forbidden)?;
let db = State::<SqlitePool>::from_request_parts(parts, state).await?;
let mut tx = db.begin().await?;
+ tx.tokens().expire(requested_at.timestamp()).await?;
let login = tx.tokens().validate(token).await?;
tx.commit().await?;