koprogo_api/application/dto/
auth_dto.rs1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4#[derive(Debug, Deserialize, Validate)]
5pub struct LoginRequest {
6 #[validate(email(message = "Email must be valid"))]
7 pub email: String,
8
9 #[validate(length(min = 6, message = "Password must be at least 6 characters"))]
10 pub password: String,
11}
12
13#[derive(Debug, Deserialize, Validate)]
14pub struct RegisterRequest {
15 #[validate(email(message = "Email must be valid"))]
16 pub email: String,
17
18 #[validate(length(min = 6, message = "Password must be at least 6 characters"))]
19 pub password: String,
20
21 #[validate(length(min = 2, message = "First name must be at least 2 characters"))]
22 pub first_name: String,
23
24 #[validate(length(min = 2, message = "Last name must be at least 2 characters"))]
25 pub last_name: String,
26
27 pub role: String,
28
29 pub organization_id: Option<uuid::Uuid>,
30}
31
32#[derive(Debug, Serialize)]
33pub struct LoginResponse {
34 pub token: String,
35 pub refresh_token: String,
36 pub user: UserResponse,
37}
38
39#[derive(Debug, Deserialize)]
40pub struct RefreshTokenRequest {
41 pub refresh_token: String,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct UserResponse {
46 pub id: uuid::Uuid,
47 pub email: String,
48 pub first_name: String,
49 pub last_name: String,
50 pub role: String,
51 pub organization_id: Option<uuid::Uuid>,
52 pub is_active: bool,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Claims {
57 pub sub: String, pub email: String,
59 pub role: String,
60 pub organization_id: Option<uuid::Uuid>,
61 pub exp: i64, pub iat: i64, }