use super::value_parsers::parse_truthy;
use crate::emergency_auth::{DEFAULT_DURATION_MINUTES, EmergencyAuthConfig};
#[derive(clap::Args, Debug, Clone, Default)]
pub struct EmergencyArgs {
#[arg(
long,
env = "EMERGENCY_ACCEPT_ANY_TOKEN",
hide_env_values = true,
num_args = 0..=1,
default_value_t = false,
default_missing_value = "true",
value_parser = parse_truthy
)]
pub emergency_accept_any_token: bool,
#[arg(
long,
env = "EMERGENCY_ALLOW_NON_LOOPBACK",
num_args = 0..=1,
default_value_t = false,
default_missing_value = "true",
value_parser = parse_truthy
)]
pub emergency_allow_non_loopback: bool,
#[arg(
long,
env = "EMERGENCY_DURATION_MINUTES",
default_value_t = DEFAULT_DURATION_MINUTES
)]
pub emergency_duration_minutes: u64,
}
impl EmergencyArgs {
#[must_use]
pub const fn config(&self) -> EmergencyAuthConfig {
EmergencyAuthConfig {
enabled: self.emergency_accept_any_token,
allow_non_loopback: self.emergency_allow_non_loopback,
duration_minutes: self.emergency_duration_minutes,
}
}
}