alibi_plugins/oauth_provider/
token_storage.rs1use alibi_core::AuthResult;
3use async_trait::async_trait;
4use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
5use sha2::{Digest as _, Sha256};
6
7#[async_trait]
10pub trait OAuthTokenHasher: Send + Sync + std::fmt::Debug {
11 async fn hash(&self, token: &str, kind: &str) -> AuthResult<String>;
12}
13impl super::OAuthProviderPlugin {
14 pub async fn hash_token(&self, token: &str, kind: &str) -> AuthResult<String> {
16 if let Some(hasher) = &self.config.token_hasher {
17 hasher.hash(token, kind).await
18 } else {
19 Ok(URL_SAFE_NO_PAD.encode(Sha256::digest(token)))
20 }
21 }
22}