this repo has no description
1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use std::fmt;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct ActClaim {
7 pub sub: String,
8}
9
10#[derive(Debug, Serialize, Deserialize)]
11pub struct Claims {
12 pub iss: String,
13 pub sub: String,
14 pub aud: String,
15 pub exp: usize,
16 pub iat: usize,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub scope: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub lxm: Option<String>,
21 pub jti: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub act: Option<ActClaim>,
24}
25
26#[derive(Debug, Serialize, Deserialize)]
27pub struct Header {
28 pub alg: String,
29 pub typ: String,
30}
31
32#[derive(Debug, Serialize, Deserialize)]
33pub struct UnsafeClaims {
34 pub iss: String,
35 pub sub: Option<String>,
36}
37
38pub struct TokenData<T> {
39 pub claims: T,
40}
41
42pub struct TokenWithMetadata {
43 pub token: String,
44 pub jti: String,
45 pub expires_at: DateTime<Utc>,
46}
47
48#[derive(Debug, Clone, Copy, PartialEq, Eq)]
49pub enum TokenVerifyError {
50 Expired,
51 Invalid,
52}
53
54impl fmt::Display for TokenVerifyError {
55 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
56 match self {
57 Self::Expired => write!(f, "Token expired"),
58 Self::Invalid => write!(f, "Token invalid"),
59 }
60 }
61}
62
63impl std::error::Error for TokenVerifyError {}