use std::fmt::Debug;
use crate::common::error::JwtError;
pub trait JwtVerifier: Send + Sync + Debug {
async fn verify_id_token(&self, token: &str) -> Result<Box<dyn IdTokenClaims>, JwtError>;
async fn verify_access_token(
&self,
token: &str,
) -> Result<Box<dyn AccessTokenClaims>, JwtError>;
}
pub trait IdTokenClaims: Send + Sync + Debug {
fn get_sub(&self) -> &str;
fn get_iss(&self) -> &str;
fn get_aud(&self) -> &str;
fn get_exp(&self) -> u64;
fn get_iat(&self) -> u64;
fn get_email(&self) -> Option<&str>;
fn is_email_verified(&self) -> bool;
fn get_name(&self) -> Option<&str>;
}
pub trait AccessTokenClaims: Send + Sync + Debug {
fn get_sub(&self) -> &str;
fn get_iss(&self) -> &str;
fn get_aud(&self) -> &str;
fn get_exp(&self) -> u64;
fn get_iat(&self) -> u64;
fn get_scopes(&self) -> Vec<String>;
fn has_scope(&self, scope: &str) -> bool;
fn get_client_id(&self) -> Option<&str>;
}