easy-auth 0.3.0

lib qui facilite la génération de mot de passe et l'encodage decodage de jwt
Documentation
use std::fmt::Debug;

use jsonwebtoken::{decode, DecodingKey, EncodingKey, Header, Validation};
use serde::{Deserialize, Serialize};
use serde::de::DeserializeOwned;

use crate::core::token::errors::DecodeError;
use crate::core::token::token_service::TokenService;

pub struct JwtTokenService {
    secret: String
}

impl JwtTokenService {
    pub fn new(secret: String) -> Self {
        Self {
            secret
        }
    }
}

impl TokenService for JwtTokenService {
    fn encode<'a, CLAIMS: Debug + Serialize + Deserialize<'a>>(&self, claims: CLAIMS) -> String {
        let secret_key = EncodingKey::from_secret(self.secret.as_bytes());
        let header = Header::new(jsonwebtoken::Algorithm::HS256);
        jsonwebtoken::encode(&header, &claims, &secret_key).unwrap()
    }

    fn decode<CLAIMS: Debug + Serialize + DeserializeOwned>(&self, token: &str) -> Result<CLAIMS, DecodeError> {
        decode::<CLAIMS>(token, &DecodingKey::from_secret(self.secret.as_bytes()), &Validation::default())
            .map(|token_data| token_data.claims)
            .map_err(|err| DecodeError::new(err.to_string()))
    }
}