Skip to main content

ironflow_api/entities/
auth.rs

1//! Auth request and response DTOs.
2
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5use validator::Validate;
6
7/// Sign-up request body.
8#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
9#[derive(Debug, Deserialize, Validate)]
10pub struct SignUpRequest {
11    /// Email address.
12    #[validate(email)]
13    pub email: String,
14    /// Display username.
15    #[validate(length(min = 3, message = "username must be at least 3 characters"))]
16    pub username: String,
17    /// Plaintext password (min 8 characters).
18    #[validate(length(min = 8, message = "password must be at least 8 characters"))]
19    pub password: String,
20}
21
22/// Sign-in request body.
23#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
24#[derive(Debug, Deserialize)]
25pub struct SignInRequest {
26    /// Email address.
27    pub email: String,
28    /// Plaintext password.
29    pub password: String,
30}
31
32/// Current user profile response.
33#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
34#[derive(Debug, Serialize)]
35pub struct MeResponse {
36    /// User ID.
37    pub user_id: Uuid,
38    /// Email address.
39    pub email: String,
40    /// Display username.
41    pub username: String,
42    /// Admin flag.
43    pub is_admin: bool,
44}