summaryrefslogtreecommitdiff
path: root/src/token/mod.rs
blob: 58ff08b926c3b965ee796039d7b9dee86ee5af95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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,
        )
    }
}