use super::super::passport::Passport;
use chrono::{
TimeDelta,
Utc,
};
use rocket::serde::{
Deserialize,
Serialize,
};
#[derive(Serialize, Deserialize, Debug)]
#[serde(crate = "rocket::serde")]
pub struct JsonWebToken {
pub passport: Passport,
exp: usize,
}
impl JsonWebToken {
pub fn new(passport: &Passport, valid_timespan: TimeDelta) -> Self {
let exp = Utc::now() + valid_timespan;
Self {
passport: passport.to_owned(),
exp: exp.timestamp() as usize,
}
}
pub fn is_valid(&self) -> bool {
self.exp > Utc::now().timestamp() as usize
}
}