Skip to content
Clone
b6f7f73
82 lines 2.3 KB Rust
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct AccessClaims {
pub iss: String,
#[serde(deserialize_with = "crate::claims::subject::deserialize")]
pub sub: i64,
#[serde(rename = "client_id", alias = "app_id")]
pub client_id: String,
#[serde(rename = "aud", alias = "audience")]
pub aud: String,
#[serde(rename = "jti", alias = "token_id")]
pub jti: String,
#[serde(rename = "iat", alias = "issued_at")]
pub iat: i64,
#[serde(rename = "exp", alias = "expires_at")]
pub exp: i64,
#[serde(default)]
pub security_version: i32,
#[serde(default, rename = "sid", alias = "session_id")]
pub sid: Option<String>,
#[serde(default, deserialize_with = "crate::claims::scopes::deserialize")]
pub scope: Option<Vec<String>>,
#[serde(default)]
pub username: Option<String>,
#[serde(default = "crate::claims::default_token_type")]
pub token_type: String,
}
impl AccessClaims {
pub fn scopes(&self) -> &[String] {
self.scope.as_deref().unwrap_or_default()
}
pub fn has_scope(&self, scope: &str) -> bool {
self.scopes().iter().any(|value| value == scope)
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct IdClaims {
pub iss: String,
pub sub: String,
pub aud: String,
#[serde(default)]
pub azp: Option<String>,
pub iat: i64,
pub exp: i64,
#[serde(default)]
pub nonce: Option<String>,
#[serde(default)]
pub at_hash: Option<String>,
#[serde(default)]
pub sid: Option<String>,
#[serde(default)]
pub preferred_username: Option<String>,
#[serde(default)]
pub name: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ServiceClaims {
pub iss: String,
#[serde(deserialize_with = "crate::claims::subject::deserialize")]
pub sub: i64,
#[serde(rename = "aud", alias = "audience")]
pub aud: String,
#[serde(rename = "jti", alias = "token_id")]
pub jti: String,
#[serde(rename = "iat", alias = "issued_at")]
pub iat: i64,
#[serde(rename = "exp", alias = "expires_at")]
pub exp: i64,
#[serde(default)]
pub security_version: i32,
#[serde(default)]
pub scopes: Vec<i32>,
#[serde(default)]
pub service_id: String,
#[serde(default = "crate::claims::default_token_type")]
pub token_type: String,
}