use cheers_core::{Claims, Error, TokenVerifier};
use crate::revocation::RevocationReader;
pub struct EdgeVerifier<V, Rd> {
verifier: V,
revoked: Rd,
}
impl<V, Rd> EdgeVerifier<V, Rd>
where
V: TokenVerifier + Send + Sync,
Rd: RevocationReader,
{
pub fn new(verifier: V, revoked: Rd) -> Self {
Self { verifier, revoked }
}
pub async fn verify_at(&self, token: &str, now: i64) -> Result<Claims, Error> {
let claims = self.verifier.verify_at(token, now)?;
if self.revoked.is_revoked(&claims.jti).await? {
return Err(Error::Revoked);
}
Ok(claims)
}
}