1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{Algorithm, Token, VERSION};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq)]
9pub struct TokenManager {
10
11 #[doc(hidden)]
12 pub version: u8,
13
14 pub algorithm: Algorithm,
16
17 key: String,
18}
19
20
21impl TokenManager {
22
23 pub fn new(alg: Algorithm, key: &str) -> TokenManager {
26 TokenManager {
27 version: VERSION,
28 key: key.to_string(),
29 algorithm: alg,
30 }
31 }
32
33 pub fn create_token(&self, payload: HashMap<String, String>) -> Token {
35 Token::new(
36 self.algorithm.clone(),
37 payload,
38 &self.key
39 )
40 }
41
42 pub fn validate_token(&self, token: &Token) -> bool {
44 token.hash == token.get_hash(&self.key)
45 }
46}