shared/domain/auth/
model.rs1use serde::Deserialize;
2use utoipa::ToSchema;
3use validator::Validate;
4
5use super::validation::validate_password;
6use crate::config::PasswordRequirements;
7
8#[derive(Debug, Validate, Deserialize, ToSchema)]
9#[schema(example = json!({"token": "edc365fa5e13751XXXXXXX"}))]
10pub struct TokenQuery {
11 #[schema(value_type = String, format = Password)]
12 pub token: secrecy::SecretString,
13}
14
15#[derive(Debug, Deserialize, Validate, ToSchema)]
16#[validate(context = "PasswordRequirements")]
17#[schema(example = json!({"email": "example@email.com", "password": "password"}))]
18pub struct LoginRequest {
19 #[validate(email)]
20 pub email: String,
21 #[validate(custom(function = "validate_password", use_context))]
22 pub password: String,
23}
24
25#[derive(Debug, Deserialize, Validate, ToSchema)]
26#[validate(context = "PasswordRequirements")]
27#[schema(example = json!({"username": "name", "email": "example@email.com", "password": "password"}))]
28pub struct RegisterRequest {
29 pub username: String,
30 #[validate(email)]
31 pub email: String,
32 #[validate(custom(function = "validate_password", use_context))]
33 pub password: String,
34}
35
36#[derive(Debug, Deserialize, Validate, ToSchema)]
37#[validate(context = "PasswordRequirements")]
38#[schema(example = json!({"token": String::default(), "csrf_token": String::default(), "password": String::default()}))]
39pub struct ResetPasswordRequest {
40 #[schema(value_type = String, format = Password)]
41 pub token: secrecy::SecretString,
42
43 #[schema(value_type = String, format = Password)]
44 pub csrf_token: secrecy::SecretString,
45
46 #[validate(custom(function = "validate_password", use_context))]
47 pub password: String,
48}