cal_core/authentication/
jwt.rs

1// File: cal-core/src/authentication/jwt.rs
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Claims {
7    pub sub: String,         // user_id
8    pub username: String,    // email
9    pub agent_id: String,
10    pub exp: i64,
11    pub iat: i64,
12    pub permissions: Vec<String>, // groups
13    // Optional fields for session management
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub session_id: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub account_id: Option<String>,
18}
19
20#[derive(Debug, Serialize, Deserialize)]
21pub struct TokenResponse {
22    pub access_token: String,
23    pub token_type: String,
24    pub expires_in: i64,
25}