Newer
Older
use actix_web::cookie::{time::Duration, Cookie, SameSite};
use rand::{distributions::Alphanumeric, Rng};
pub struct SecureCookie;
impl SecureCookie {
pub fn new<'a>(name: &String, value: &String) -> Cookie<'a> {
Cookie::build(name.to_owned(), value.to_owned())
.path("/")
.http_only(true)
.max_age(Duration::days(7))
.same_site(SameSite::Strict)
.secure(true)
.finish()
}
pub fn generate_token(size: usize) -> String {
// Thanks to https://stackoverflow.com/questions/54275459
rand::thread_rng()
.sample_iter(&Alphanumeric)
.take(size)
.map(char::from)
.collect::<String>()
.to_ascii_lowercase()
}
}