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}