summaryrefslogtreecommitdiff
path: root/src/token/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/token/mod.rs')
-rw-r--r--src/token/mod.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/token/mod.rs b/src/token/mod.rs
index 33403ef..58ff08b 100644
--- a/src/token/mod.rs
+++ b/src/token/mod.rs
@@ -6,4 +6,36 @@ 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,
+ )
+ }
+}