19 lines
492 B
Rust
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)
|
|
}
|