openauth_core/options/
user.rs1use std::collections::BTreeMap;
2
3use crate::db::{DbFieldType, DbValue};
4
5#[derive(Debug, Clone, Default, PartialEq)]
7pub struct UserOptions {
8 pub change_email: ChangeEmailOptions,
9 pub delete_user: DeleteUserOptions,
10 pub additional_fields: BTreeMap<String, UserAdditionalField>,
11}
12
13#[derive(Debug, Clone, PartialEq)]
15pub struct UserAdditionalField {
16 pub field_type: DbFieldType,
17 pub required: bool,
18 pub input: bool,
19 pub returned: bool,
20 pub default_value: Option<DbValue>,
21 pub db_name: Option<String>,
22}
23
24impl UserAdditionalField {
25 pub fn new(field_type: DbFieldType) -> Self {
26 Self {
27 field_type,
28 required: true,
29 input: true,
30 returned: true,
31 default_value: None,
32 db_name: None,
33 }
34 }
35
36 #[must_use]
37 pub fn optional(mut self) -> Self {
38 self.required = false;
39 self
40 }
41
42 #[must_use]
43 pub fn generated(mut self) -> Self {
44 self.input = false;
45 self
46 }
47
48 #[must_use]
49 pub fn hidden(mut self) -> Self {
50 self.returned = false;
51 self
52 }
53
54 #[must_use]
55 pub fn default_value(mut self, value: DbValue) -> Self {
56 self.default_value = Some(value);
57 self
58 }
59
60 #[must_use]
61 pub fn db_name(mut self, db_name: impl Into<String>) -> Self {
62 self.db_name = Some(db_name.into());
63 self
64 }
65}
66
67#[derive(Debug, Clone, Default, PartialEq, Eq)]
69pub struct ChangeEmailOptions {
70 pub enabled: bool,
71 pub update_email_without_verification: bool,
72}
73
74#[derive(Debug, Clone, Default, PartialEq, Eq)]
76pub struct DeleteUserOptions {
77 pub enabled: bool,
78}