cal_core/rest/
auth.rs

1// File: cal-core/src/rest/auth.rs
2
3use serde::{Deserialize, Serialize};
4#[cfg(feature = "openapi")]
5use utoipa::ToSchema;
6use validator::Validate;
7
8#[derive(Debug, Serialize, Deserialize, Validate)]
9#[cfg_attr(feature = "openapi", derive(ToSchema))]
10pub struct LoginRequest {
11    #[validate(email)]
12    pub email: String,
13    #[validate(length(min = 1))]
14    pub password: String,
15}
16
17#[derive(Debug, Serialize, Deserialize)]
18#[cfg_attr(feature = "openapi", derive(ToSchema))]
19pub struct LoginResponse {
20    pub success: bool,
21    pub token: Option<String>,
22    pub user_id: Option<String>,
23    pub agent_id: Option<String>,
24    pub permissions: Option<Vec<String>>,
25    pub error: Option<String>,
26    pub softphone_enabled: Option<bool>,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30#[cfg_attr(feature = "openapi", derive(ToSchema))]
31pub struct LogoutRequest {
32    pub token: Option<String>,
33    pub session_id: Option<String>,
34}
35
36#[derive(Debug, Serialize, Deserialize, Validate)]
37#[cfg_attr(feature = "openapi", derive(ToSchema))]
38pub struct PasswordResetRequest {
39    #[validate(email)]
40    pub email: String,
41}
42
43#[derive(Debug, Serialize, Deserialize, Validate)]
44#[cfg_attr(feature = "openapi", derive(ToSchema))]
45pub struct PasswordResetConfirm {
46    pub token: String,
47    #[validate(length(min = 8))]
48    pub new_password: String,
49}
50
51#[derive(Debug, Serialize, Deserialize, Validate)]
52#[cfg_attr(feature = "openapi", derive(ToSchema))]
53pub struct RegisterRequest {
54    #[validate(email)]
55    pub email: String,
56    #[validate(length(min = 8))]
57    pub password: String,
58    pub first_name: String,
59    pub last_name: String,
60    pub account_id: Option<String>,
61}
62
63#[derive(Debug, Serialize, Deserialize)]
64#[cfg_attr(feature = "openapi", derive(ToSchema))]
65pub struct RegisterResponse {
66    pub success: bool,
67    pub user_id: Option<String>,
68    pub message: Option<String>,
69    pub error: Option<String>,
70}