use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct AuthConfig {
pub enabled: bool,
pub provider: AuthProvider,
pub jwt_secret: Option<String>,
pub jwt_algorithm: String,
pub domain: Option<String>,
pub audience: Option<String>,
pub client_id: Option<String>,
pub header_name: String,
pub token_prefix: String,
pub exclude_paths: Vec<String>,
}
impl Default for AuthConfig {
fn default() -> Self {
Self {
enabled: false,
provider: AuthProvider::None,
jwt_secret: None,
jwt_algorithm: "HS256".to_string(),
domain: None,
audience: None,
client_id: None,
header_name: "Authorization".to_string(),
token_prefix: "Bearer ".to_string(),
exclude_paths: vec!["/health".to_string()],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum AuthProvider {
#[default]
None,
Jwt,
Auth0,
Clerk,
Webhook,
}