diff --git a/jwt-authorizer/src/authorizer.rs b/jwt-authorizer/src/authorizer.rs index 6f82e64..825c5b3 100644 --- a/jwt-authorizer/src/authorizer.rs +++ b/jwt-authorizer/src/authorizer.rs @@ -13,33 +13,14 @@ use crate::{ oidc, Refresh, RegisteredClaims, }; -pub trait ClaimsChecker { - fn check(&self, claims: &C) -> bool; -} - -#[derive(Clone)] -pub struct FnClaimsChecker -where - C: Clone + Send + Sync, -{ - pub checker_fn: Arc bool + Send + Sync>>, -} - -impl ClaimsChecker for FnClaimsChecker -where - C: Clone + Send + Sync, -{ - fn check(&self, claims: &C) -> bool { - (self.checker_fn)(claims) - } -} +pub type ClaimsCheckerFn = Arc bool + Send + Sync>>; pub struct Authorizer where C: Clone + Send, { pub key_source: KeySource, - pub claims_checker: Option>, + pub claims_checker: Option>, pub validation: crate::validation::Validation, pub jwt_source: JwtSource, } @@ -70,7 +51,7 @@ where { pub(crate) async fn build( key_source_type: KeySourceType, - claims_checker: Option>, + claims_checker: Option>, refresh: Option, validation: crate::validation::Validation, jwt_source: JwtSource, @@ -212,7 +193,7 @@ where let token_data = decode::(token, &val_key.key, jwt_validation)?; if let Some(ref checker) = self.claims_checker { - if !checker.check(&token_data.claims) { + if !checker(&token_data.claims) { return Err(AuthError::InvalidClaims()); } } diff --git a/jwt-authorizer/src/builder.rs b/jwt-authorizer/src/builder.rs index ab3dc34..925d532 100644 --- a/jwt-authorizer/src/builder.rs +++ b/jwt-authorizer/src/builder.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use serde::de::DeserializeOwned; use crate::{ - authorizer::{FnClaimsChecker, KeySourceType}, + authorizer::{ClaimsCheckerFn, KeySourceType}, error::InitError, layer::{AuthorizationLayer, JwtSource}, Authorizer, Refresh, RefreshStrategy, RegisteredClaims, Validation, @@ -19,7 +19,7 @@ where { key_source_type: KeySourceType, refresh: Option, - claims_checker: Option>, + claims_checker: Option>, validation: Option, jwt_source: JwtSource, } @@ -158,9 +158,7 @@ where where F: Fn(&C) -> bool + Send + Sync + 'static, { - self.claims_checker = Some(FnClaimsChecker { - checker_fn: Arc::new(Box::new(checker_fn)), - }); + self.claims_checker = Some(Arc::new(Box::new(checker_fn))); self }