Skip to main content

sova_auth/
forms.rs

1//! Fortify form DTOs (vld schemas when feature `vld` is on).
2
3#[cfg(feature = "vld")]
4mod schemas {
5    use vld::schema::VldSchema;
6
7    vld::schema! {
8        #[derive(Debug, Clone)]
9        pub struct RegisterForm {
10            pub name: String => vld::string().min(2).max(80),
11            pub email: String => vld::string().email(),
12            pub password: String => vld::string().min(8).max(128),
13            pub password_confirmation: Option<String> => vld::string().min(8).max(128).optional(),
14            pub csrf: Option<String> => vld::string().optional(),
15        }
16    }
17
18    vld::schema! {
19        #[derive(Debug, Clone)]
20        pub struct LoginForm {
21            pub email: String => vld::string().email(),
22            pub password: String => vld::string().min(1),
23            pub csrf: Option<String> => vld::string().optional(),
24        }
25    }
26
27    vld::schema! {
28        #[derive(Debug, Clone)]
29        pub struct ForgotForm {
30            pub email: String => vld::string().email(),
31            pub csrf: Option<String> => vld::string().optional(),
32        }
33    }
34
35    vld::schema! {
36        #[derive(Debug, Clone)]
37        pub struct ResetForm {
38            pub email: String => vld::string().email(),
39            pub token: String => vld::string().min(8),
40            pub password: String => vld::string().min(8).max(128),
41            pub password_confirmation: String => vld::string().min(8).max(128),
42            pub csrf: Option<String> => vld::string().optional(),
43        }
44    }
45
46    vld::schema! {
47        #[derive(Debug, Clone)]
48        pub struct ProfileForm {
49            pub name: String => vld::string().min(2).max(80),
50            pub email: String => vld::string().email(),
51            pub csrf: Option<String> => vld::string().optional(),
52        }
53    }
54
55    vld::schema! {
56        #[derive(Debug, Clone)]
57        pub struct PasswordForm {
58            pub current_password: String => vld::string().min(1),
59            pub password: String => vld::string().min(8).max(128),
60            pub password_confirmation: String => vld::string().min(8).max(128),
61            pub csrf: Option<String> => vld::string().optional(),
62        }
63    }
64
65    vld::schema! {
66        #[derive(Debug, Clone)]
67        pub struct ConfirmPasswordForm {
68            pub password: String => vld::string().min(1),
69            pub csrf: Option<String> => vld::string().optional(),
70        }
71    }
72
73    vld::schema! {
74        #[derive(Debug, Clone)]
75        pub struct TwoFactorCodeForm {
76            pub code: Option<String> => vld::string().optional(),
77            pub recovery_code: Option<String> => vld::string().optional(),
78            pub csrf: Option<String> => vld::string().optional(),
79        }
80    }
81
82    vld::schema! {
83        #[derive(Debug, Clone)]
84        pub struct DisableTwoFactorForm {
85            pub password: Option<String> => vld::string().optional(),
86            pub current_password: Option<String> => vld::string().optional(),
87            pub csrf: Option<String> => vld::string().optional(),
88        }
89    }
90}
91
92#[cfg(feature = "vld")]
93pub use schemas::*;
94
95#[cfg(feature = "vld")]
96sova_vld::doc_schema!(
97    RegisterForm,
98    LoginForm,
99    ForgotForm,
100    ResetForm,
101    ProfileForm,
102    PasswordForm,
103    ConfirmPasswordForm,
104    TwoFactorCodeForm,
105    DisableTwoFactorForm,
106);