brass/db/src/support/token_generation.rs

19 lines
492 B
Rust

use chrono::{NaiveDateTime, TimeDelta, Utc};
use rand::{Rng, distr::Alphanumeric, rng};
pub fn generate_token_and_expiration(
token_length_bytes: usize,
validity: TimeDelta,
) -> (String, NaiveDateTime) {
let value = std::iter::repeat(())
.map(|()| rng().sample(Alphanumeric))
.take(token_length_bytes)
.collect::<Vec<_>>();
let token = String::from_utf8(value).unwrap();
let expires = Utc::now().naive_utc() + validity;
(token, expires)
}