use tracing::debug; use crate::config::AppConfig; #[derive(PartialEq)] pub enum AccessLevel { Read, ReadWrite, } pub fn get_access_level(config: &AppConfig, token: &str) -> Option { if config.read_write_tokens.contains(token) { Some(AccessLevel::ReadWrite) } else if config.read_tokens.contains(token) { Some(AccessLevel::Read) } else { None } } pub fn has_access_level( config: &AppConfig, token: &str, requested_access_level: AccessLevel, ) -> bool { if let Some(access_level) = get_access_level(&config, token) { match access_level { AccessLevel::ReadWrite => true, AccessLevel::Read => requested_access_level == AccessLevel::Read, } } else { debug!("Missing access token"); false } }