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