use session::{Session, SessionUser}; use uuid::Uuid; use crate::errors::{ApiError, UserError}; pub const PWD_VERSION_KEY: &str = "auth:pwd_version"; pub fn session_token_key(uid: Uuid) -> String { format!("auth:token_hash:{uid}") } pub fn require_uid(session: &Session) -> Result> { match session.uid() { Some(uid) => Ok(uid), None => Err(Box::new(ApiError::from(UserError::Unauthorized))), } } pub fn pwd_version_matches(session: &Session, current: Option) -> bool { let stored = session.get::(PWD_VERSION_KEY); match (stored, current) { (Some(stored_ver), Some(curr_ver)) => stored_ver == curr_ver, (None, None) => true, _ => false, } }