use config::{Config, ConfigError}; use tracing::warn; use crate::configs::key::{ AUTH_DEFAULT_ADMIN_PASSWORD_KEY, AUTH_DEFAULT_ADMIN_USERNAME_KEY, AUTH_JWT_SECRET_KEY, }; use super::FromConfig; #[derive(Debug, Clone)] pub struct AuthSettings { pub jwt_secret: Option, pub default_admin_username: Option, pub default_admin_password: Option, } impl FromConfig for AuthSettings { fn from_config(_config: &Config) -> Result { Ok(AuthSettings { jwt_secret: _config .get_string(AUTH_JWT_SECRET_KEY) .inspect_err(|err| { match err { ConfigError::NotFound(_) => { warn!( "{} not found in configuration, A random secret will be generated at runtime.", AUTH_JWT_SECRET_KEY ); } _ => { warn!( "Failed to read {} from configuration, A random secret will be generated at runtime: {}", AUTH_JWT_SECRET_KEY, err ); } }; }) .ok(), default_admin_username: _config .get_string(AUTH_DEFAULT_ADMIN_USERNAME_KEY) .ok(), default_admin_password: _config .get_string(AUTH_DEFAULT_ADMIN_PASSWORD_KEY) .ok(), }) } fn validate(&self) -> Result<(), String> { Ok(()) } #[cfg(test)] fn mock() -> Self { AuthSettings { jwt_secret: Some("mock_jwt_secret".to_string()), default_admin_username: Some("admin".to_string()), default_admin_password: Some("password".to_string()), } } }