use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::{Algorithm, Token, VERSION};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq)]
pub struct TokenManager {
#[doc(hidden)]
pub version: u8,
pub algorithm: Algorithm,
key: String,
}
impl TokenManager {
pub fn new(alg: Algorithm, key: &str) -> TokenManager {
TokenManager {
version: VERSION,
key: key.to_string(),
algorithm: alg,
}
}
pub fn create_token(&self, payload: HashMap<String, String>) -> Token {
Token::new(
self.algorithm.clone(),
payload,
&self.key
)
}
pub fn validate_token(&self, token: &Token) -> bool {
token.hash == token.get_hash(&self.key)
}
}