diff --git a/moneymgr_backend/src/extractors/auth_extractor.rs b/moneymgr_backend/src/extractors/auth_extractor.rs index 5b43875..e89bcd8 100644 --- a/moneymgr_backend/src/extractors/auth_extractor.rs +++ b/moneymgr_backend/src/extractors/auth_extractor.rs @@ -160,7 +160,20 @@ impl FromRequest for AuthExtractor { )); }; - // TODO : update token last activity & expiration + // Update last use (if needed) + if token.shall_update_time_used() { + if let Err(e) = tokens_service::update_time_used(&token).await { + log::error!("Failed to refresh last usage of token! {}", e); + } + } + + // Handle tokens expiration + if token.is_expired() { + log::error!("Attempted to use expired token! {:?}", token); + return Err(actix_web::error::ErrorBadRequest( + "Token has expired!", + )); + } return Ok(Self { method: AuthenticatedMethod::Token(token), diff --git a/moneymgr_web/src/dialogs/CreateTokenDialog.tsx b/moneymgr_web/src/dialogs/CreateTokenDialog.tsx index 63a2046..e28d8bb 100644 --- a/moneymgr_web/src/dialogs/CreateTokenDialog.tsx +++ b/moneymgr_web/src/dialogs/CreateTokenDialog.tsx @@ -82,7 +82,7 @@ export function CreateTokenDialog(p: { return ( - Nouveau jeton + New token ; + return ; }, }, { @@ -211,7 +213,20 @@ function TokensRouteInner(p: { return ( New} + actions={ + + + + + + + + + + + + + } > {p.createdToken && }