use serde::{Deserialize, Serialize};
use crate::modules::auth::services::auth_service::Session;
/// Request body for `POST /auth/register`.
#[derive(Debug, Deserialize)]
pub struct RegisterRequest {
pub name: String,
pub email: String,
pub password: String,
}
/// Request body for `POST /auth/login`.
#[derive(Debug, Deserialize)]
pub struct LoginRequest {
pub email: String,
pub password: String,
}
/// The authenticated user, as returned by `GET /auth/me`.
#[derive(Debug, Serialize)]
pub struct MeResponse {
pub id: i64,
pub name: String,
pub email: String,
pub roles: Vec<String>,
}
/// Response for register and login. Send `access_token` as
/// `Authorization: Bearer <access_token>`.
#[derive(Debug, Serialize)]
pub struct TokenResponse {
pub token_type: &'static str,
pub access_token: String,
pub expires_at: String,
pub user: MeResponse,
}
impl From<Session> for TokenResponse {
fn from(session: Session) -> Self {
Self {
token_type: "Bearer",
access_token: session.token,
expires_at: session.expires_at,
user: MeResponse {
id: session.user.id,
name: session.user.name,
email: session.user.email,
roles: session.roles,
},
}
}
}