35 lines
833 B
Rust
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
|
|
}
|
|
}
|