mirror of
https://github.com/TECHNOFAB11/jwt-authorizer.git
synced 2025-12-12 08:00:07 +01:00
feat: claim checker accepts closures
chore: remove Sync (not needed) chore: simplify
This commit is contained in:
parent
5284ff72aa
commit
b42aab8d31
3 changed files with 13 additions and 7 deletions
|
|
@ -20,14 +20,14 @@ pub trait ClaimsChecker<C> {
|
|||
#[derive(Clone)]
|
||||
pub struct FnClaimsChecker<C>
|
||||
where
|
||||
C: Clone,
|
||||
C: Clone + Send + Sync,
|
||||
{
|
||||
pub checker_fn: fn(&C) -> bool,
|
||||
pub checker_fn: Arc<Box<dyn Fn(&C) -> bool + Send + Sync>>,
|
||||
}
|
||||
|
||||
impl<C> ClaimsChecker<C> for FnClaimsChecker<C>
|
||||
where
|
||||
C: Clone,
|
||||
C: Clone + Send + Sync,
|
||||
{
|
||||
fn check(&self, claims: &C) -> bool {
|
||||
(self.checker_fn)(claims)
|
||||
|
|
@ -36,7 +36,7 @@ where
|
|||
|
||||
pub struct Authorizer<C = RegisteredClaims>
|
||||
where
|
||||
C: Clone,
|
||||
C: Clone + Send,
|
||||
{
|
||||
pub key_source: KeySource,
|
||||
pub claims_checker: Option<FnClaimsChecker<C>>,
|
||||
|
|
|
|||
|
|
@ -154,8 +154,13 @@ where
|
|||
|
||||
/// configures token content check (custom function), if false a 403 will be sent.
|
||||
/// (AuthError::InvalidClaims())
|
||||
pub fn check(mut self, checker_fn: fn(&C) -> bool) -> AuthorizerBuilder<C> {
|
||||
self.claims_checker = Some(FnClaimsChecker { checker_fn });
|
||||
pub fn check<F>(mut self, checker_fn: F) -> AuthorizerBuilder<C>
|
||||
where
|
||||
F: Fn(&C) -> bool + Send + Sync + 'static,
|
||||
{
|
||||
self.claims_checker = Some(FnClaimsChecker {
|
||||
checker_fn: Arc::new(Box::new(checker_fn)),
|
||||
});
|
||||
|
||||
self
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,8 +126,9 @@ mod tests {
|
|||
|
||||
#[tokio::test]
|
||||
async fn protected_with_claims_check() {
|
||||
let b = true; // to test closures
|
||||
let rsp_ok = make_proteced_request(
|
||||
JwtAuthorizer::from_rsa_pem("../config/rsa-public2.pem").check(|_| true),
|
||||
JwtAuthorizer::from_rsa_pem("../config/rsa-public2.pem").check(move |_| b),
|
||||
common::JWT_RSA2_OK,
|
||||
)
|
||||
.await;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue