omni_orchestrator/schemas/
auth.rs

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