From f47388015dc9bf05e78c99f7e814e934a81938b8 Mon Sep 17 00:00:00 2001 From: Ninjdai Date: Wed, 6 Aug 2025 11:14:46 +0200 Subject: [PATCH] feat: JWTs expire after 6 months --- src/routes/auth.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/routes/auth.rs b/src/routes/auth.rs index 3fcb41a..12d8f44 100644 --- a/src/routes/auth.rs +++ b/src/routes/auth.rs @@ -1,4 +1,4 @@ -use std::sync::Arc; +use std::{sync::Arc, time::{SystemTime, UNIX_EPOCH}}; use axum::{extract::{FromRequestParts, Request, State}, http::{request::Parts, StatusCode}, middleware::Next, response::{IntoResponse, Response}, Json, RequestPartsExt}; use axum_extra::{headers::{authorization::Bearer, Authorization}, TypedHeader}; @@ -9,6 +9,9 @@ use serde_json::json; use crate::{entities::user, AppState, KEYS}; +//const TOKEN_EXPIRY_TIME: u64 = 15_778_476; // 6 Months +const TOKEN_EXPIRY_TIME: u64 = 120; // 2 minutes + pub async fn auth_middleware( _claims: Claims, request: Request, @@ -43,10 +46,11 @@ pub async fn auth(State(state): State>, Json(payload): Json return Err(AuthError::WrongCredentials), Ok(Some(user)) => { user.verify_password(payload.password); + let unix_timestamp = SystemTime::now().duration_since(UNIX_EPOCH).expect("Time should go forward").as_secs(); let claims = Claims { sub: user.username, - exp: 2000000000, + exp: unix_timestamp + TOKEN_EXPIRY_TIME, user_id: user.id }; let token = encode(&Header::default(), &claims, &KEYS.encoding) @@ -139,7 +143,7 @@ impl Keys { #[derive(Debug, Serialize, Deserialize)] pub struct Claims { sub: String, - exp: usize, + exp: u64, pub user_id: u32, }