Skip to main content

modkit_auth/
traits.rs

1use crate::{claims::Claims, errors::AuthError, types::SecRequirement};
2use async_trait::async_trait;
3
4/// Validates and parses JWT tokens
5#[async_trait]
6pub trait TokenValidator: Send + Sync {
7    /// Validate a JWT token and return normalized claims
8    async fn validate_and_parse(&self, token: &str) -> Result<Claims, AuthError>;
9}
10
11/// Primary authorizer that checks if claims satisfy a security requirement
12#[async_trait]
13pub trait PrimaryAuthorizer: Send + Sync {
14    /// Check if the claims satisfy the required resource:action
15    async fn check(&self, claims: &Claims, requirement: &SecRequirement) -> Result<(), AuthError>;
16}