api_tools/server/axum/security/jwt/
payload.rs

1//! JWT Payload module
2
3use super::Jwt;
4use serde::{Deserialize, Serialize};
5use std::fmt::Debug;
6use thiserror::Error;
7
8/// Payload errors
9#[derive(Debug, Clone, PartialEq, Error)]
10pub enum PayloadError {
11    #[error("Missing token")]
12    MissingToken,
13
14    #[error("Invalid token: {0}")]
15    ParseTokenError(String),
16
17    #[error("Invalid headers")]
18    InvalidHeaders,
19}
20
21pub trait PayloadExtractor<H, P: Debug + Serialize + for<'de> Deserialize<'de>> {
22    /// Extract payload from request headers
23    fn try_from_headers(headers: &H, jwt: &Jwt) -> Result<P, PayloadError>;
24}