enex-rcache/src/access.rs
2025-05-11 08:15:46 +02:00

35 lines
833 B
Rust

use tracing::debug;
use crate::config::AppConfig;
#[derive(PartialEq)]
pub enum AccessLevel {
Read,
ReadWrite,
}
pub fn get_access_level(config: &AppConfig, token: &str) -> Option<AccessLevel> {
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
}
}