Newer
Older
use crate::cookie::SecureCookie;
use actix_web::cookie::Cookie;
#[derive(Clone)]
pub struct AppState {
pub config: AppConfig,
pub preferences: AppPreferences,
}
impl AppState {
pub fn new() -> Self {
let config = AppConfig::new(AppArgs::from_args());
let admin_cookie_name = config.admin_cookie_name.to_owned();
admin_auth_token: AdminAuthToken::new(admin_cookie_name),
#[derive(Clone)]
pub struct AdminAuthToken {
pub value: Option<String>,
pub cookie_name: String,
}
impl AdminAuthToken {
pub fn new(cookie_name: String) -> Self {
AdminAuthToken {
value: None,
cookie_name,
}
}
pub fn match_value(&self, value: String) -> bool {
match &self.value {
Some(token) => token.eq(&value),
None => false,
}
}
pub fn update_value(&mut self) {
self.value = Some(SecureCookie::generate_token(36))
}
pub fn generate_cookie(&mut self) -> Cookie {
SecureCookie::new(&self.cookie_name, self.value.as_ref().unwrap())