omni_orchestrator/schemas/
auth.rs

1pub use super::v1::models::user::User;
2use rocket::http::Status;
3use rocket::request::{FromRequest, Outcome, Request};
4use rocket::serde::{Deserialize, Serialize};
5use sqlx::MySqlPool;
6use std::sync::Arc;
7use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Header, Validation, Algorithm};
8use rocket::State;
9use chrono::{DateTime, Utc, Duration};
10use serde_json::json;
11use rocket::serde::json::Json;
12use rocket::{post, get, routes};
13
14
15// JWT claims struct
16#[derive(Debug, Serialize, Deserialize)]
17pub struct Claims {
18    pub sub: String,         // Subject (user ID)
19    pub exp: usize,          // Expiration time
20    pub iat: usize,          // Issued at
21    pub user_data: User,     // User data embedded in token
22}
23
24// Login request
25#[derive(Debug, Serialize, Deserialize)]
26pub struct LoginRequest {
27    pub email: String,
28    pub password: String,
29}
30
31// Auth config
32#[derive(Debug)]
33pub struct AuthConfig {
34    pub jwt_secret: String,
35    pub token_expiry_hours: i64,
36}
37