use super::signing_key::SigningKey;
#[derive(Debug, Clone)]
pub struct AuthConfig {
pub required: bool,
pub token_expiry_secs: u64,
pub signing_key: SigningKey,
pub issuer: Option<String>,
pub audience: Option<String>,
pub clock_skew_secs: u64,
}
pub(super) const fn default_clock_skew() -> u64 {
60
}
impl AuthConfig {
#[must_use]
pub fn with_hs256(secret: &str) -> Self {
Self {
required: true,
token_expiry_secs: 3600,
signing_key: SigningKey::hs256(secret),
issuer: None,
audience: None,
clock_skew_secs: default_clock_skew(),
}
}
#[must_use]
pub fn with_rs256_pem(pem: &str) -> Self {
Self {
required: true,
token_expiry_secs: 3600,
signing_key: SigningKey::rs256_pem(pem),
issuer: None,
audience: None,
clock_skew_secs: default_clock_skew(),
}
}
#[must_use]
pub fn with_issuer(mut self, issuer: &str) -> Self {
self.issuer = Some(issuer.to_string());
self
}
#[must_use]
pub fn with_audience(mut self, audience: &str) -> Self {
self.audience = Some(audience.to_string());
self
}
}