pub mod app; mod broadcaster; mod event; pub mod extract; mod id; pub mod repo; mod secret; use uuid::Uuid; use crate::{ clock::DateTime, user::{self, User}, }; pub use self::{broadcaster::Broadcaster, event::Event, id::Id, secret::Secret}; #[derive(Clone, Debug)] pub struct Token { pub id: Id, pub user: user::Id, pub issued_at: DateTime, pub last_used_at: DateTime, } impl Token { pub fn generate(user: &User, issued_at: &DateTime) -> (Self, Secret) { let id = Id::generate(); let secret = Uuid::new_v4().to_string().into(); ( Self { id, user: user.id.clone(), issued_at: *issued_at, last_used_at: *issued_at, }, secret, ) } }