use super::{default_public_paths, load_token};
use std::{collections::HashSet, sync::Arc};
#[derive(Debug, Clone)]
pub struct AuthState {
token: Arc<String>,
public_paths: Arc<HashSet<String>>,
}
impl AuthState {
pub fn from_env() -> Self {
let token = load_token();
Self {
token: Arc::new(token),
public_paths: Arc::new(default_public_paths()),
}
}
pub fn with_token(token: impl Into<String>) -> Self {
Self {
token: Arc::new(token.into()),
public_paths: Arc::new(default_public_paths()),
}
}
pub fn token(&self) -> &str {
&self.token
}
pub fn is_public_path(&self, path: &str) -> bool {
self.public_paths.contains(path)
}
}