1use crate::models;
12
13#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct LdapSourceRequest {
16 #[serde(rename = "name")]
18 pub name: String,
19 #[serde(rename = "slug")]
21 pub slug: String,
22 #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
23 pub enabled: Option<bool>,
24 #[serde(rename = "authentication_flow", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
26 pub authentication_flow: Option<Option<uuid::Uuid>>,
27 #[serde(rename = "enrollment_flow", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
29 pub enrollment_flow: Option<Option<uuid::Uuid>>,
30 #[serde(rename = "policy_engine_mode", skip_serializing_if = "Option::is_none")]
31 pub policy_engine_mode: Option<models::PolicyEngineMode>,
32 #[serde(rename = "user_matching_mode", skip_serializing_if = "Option::is_none")]
34 pub user_matching_mode: Option<models::UserMatchingModeEnum>,
35 #[serde(rename = "user_path_template", skip_serializing_if = "Option::is_none")]
36 pub user_path_template: Option<String>,
37 #[serde(rename = "server_uri")]
38 pub server_uri: String,
39 #[serde(rename = "peer_certificate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
41 pub peer_certificate: Option<Option<uuid::Uuid>>,
42 #[serde(rename = "client_certificate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
44 pub client_certificate: Option<Option<uuid::Uuid>>,
45 #[serde(rename = "bind_cn", skip_serializing_if = "Option::is_none")]
46 pub bind_cn: Option<String>,
47 #[serde(rename = "bind_password", skip_serializing_if = "Option::is_none")]
48 pub bind_password: Option<String>,
49 #[serde(rename = "start_tls", skip_serializing_if = "Option::is_none")]
50 pub start_tls: Option<bool>,
51 #[serde(rename = "sni", skip_serializing_if = "Option::is_none")]
52 pub sni: Option<bool>,
53 #[serde(rename = "base_dn")]
54 pub base_dn: String,
55 #[serde(rename = "additional_user_dn", skip_serializing_if = "Option::is_none")]
57 pub additional_user_dn: Option<String>,
58 #[serde(rename = "additional_group_dn", skip_serializing_if = "Option::is_none")]
60 pub additional_group_dn: Option<String>,
61 #[serde(rename = "user_object_filter", skip_serializing_if = "Option::is_none")]
63 pub user_object_filter: Option<String>,
64 #[serde(rename = "group_object_filter", skip_serializing_if = "Option::is_none")]
66 pub group_object_filter: Option<String>,
67 #[serde(rename = "group_membership_field", skip_serializing_if = "Option::is_none")]
69 pub group_membership_field: Option<String>,
70 #[serde(rename = "object_uniqueness_field", skip_serializing_if = "Option::is_none")]
72 pub object_uniqueness_field: Option<String>,
73 #[serde(rename = "sync_users", skip_serializing_if = "Option::is_none")]
74 pub sync_users: Option<bool>,
75 #[serde(rename = "sync_users_password", skip_serializing_if = "Option::is_none")]
77 pub sync_users_password: Option<bool>,
78 #[serde(rename = "sync_groups", skip_serializing_if = "Option::is_none")]
79 pub sync_groups: Option<bool>,
80 #[serde(rename = "sync_parent_group", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
81 pub sync_parent_group: Option<Option<uuid::Uuid>>,
82 #[serde(rename = "property_mappings", skip_serializing_if = "Option::is_none")]
83 pub property_mappings: Option<Vec<uuid::Uuid>>,
84 #[serde(rename = "property_mappings_group", skip_serializing_if = "Option::is_none")]
86 pub property_mappings_group: Option<Vec<uuid::Uuid>>,
87}
88
89impl LdapSourceRequest {
90 pub fn new(name: String, slug: String, server_uri: String, base_dn: String) -> LdapSourceRequest {
92 LdapSourceRequest {
93 name,
94 slug,
95 enabled: None,
96 authentication_flow: None,
97 enrollment_flow: None,
98 policy_engine_mode: None,
99 user_matching_mode: None,
100 user_path_template: None,
101 server_uri,
102 peer_certificate: None,
103 client_certificate: None,
104 bind_cn: None,
105 bind_password: None,
106 start_tls: None,
107 sni: None,
108 base_dn,
109 additional_user_dn: None,
110 additional_group_dn: None,
111 user_object_filter: None,
112 group_object_filter: None,
113 group_membership_field: None,
114 object_uniqueness_field: None,
115 sync_users: None,
116 sync_users_password: None,
117 sync_groups: None,
118 sync_parent_group: None,
119 property_mappings: None,
120 property_mappings_group: None,
121 }
122 }
123}
124