1use crate::models;
12
13#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct LdapSource {
16 #[serde(rename = "pk")]
17 pub pk: uuid::Uuid,
18 #[serde(rename = "name")]
20 pub name: String,
21 #[serde(rename = "slug")]
23 pub slug: String,
24 #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
25 pub enabled: Option<bool>,
26 #[serde(rename = "authentication_flow", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
28 pub authentication_flow: Option<Option<uuid::Uuid>>,
29 #[serde(rename = "enrollment_flow", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
31 pub enrollment_flow: Option<Option<uuid::Uuid>>,
32 #[serde(rename = "component")]
34 pub component: String,
35 #[serde(rename = "verbose_name")]
37 pub verbose_name: String,
38 #[serde(rename = "verbose_name_plural")]
40 pub verbose_name_plural: String,
41 #[serde(rename = "meta_model_name")]
43 pub meta_model_name: String,
44 #[serde(rename = "policy_engine_mode", skip_serializing_if = "Option::is_none")]
45 pub policy_engine_mode: Option<models::PolicyEngineMode>,
46 #[serde(rename = "user_matching_mode", skip_serializing_if = "Option::is_none")]
48 pub user_matching_mode: Option<models::UserMatchingModeEnum>,
49 #[serde(rename = "managed", deserialize_with = "Option::deserialize")]
51 pub managed: Option<String>,
52 #[serde(rename = "user_path_template", skip_serializing_if = "Option::is_none")]
53 pub user_path_template: Option<String>,
54 #[serde(rename = "icon", deserialize_with = "Option::deserialize")]
56 pub icon: Option<String>,
57 #[serde(rename = "server_uri")]
58 pub server_uri: String,
59 #[serde(rename = "peer_certificate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub peer_certificate: Option<Option<uuid::Uuid>>,
62 #[serde(rename = "client_certificate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
64 pub client_certificate: Option<Option<uuid::Uuid>>,
65 #[serde(rename = "bind_cn", skip_serializing_if = "Option::is_none")]
66 pub bind_cn: Option<String>,
67 #[serde(rename = "start_tls", skip_serializing_if = "Option::is_none")]
68 pub start_tls: Option<bool>,
69 #[serde(rename = "sni", skip_serializing_if = "Option::is_none")]
70 pub sni: Option<bool>,
71 #[serde(rename = "base_dn")]
72 pub base_dn: String,
73 #[serde(rename = "additional_user_dn", skip_serializing_if = "Option::is_none")]
75 pub additional_user_dn: Option<String>,
76 #[serde(rename = "additional_group_dn", skip_serializing_if = "Option::is_none")]
78 pub additional_group_dn: Option<String>,
79 #[serde(rename = "user_object_filter", skip_serializing_if = "Option::is_none")]
81 pub user_object_filter: Option<String>,
82 #[serde(rename = "group_object_filter", skip_serializing_if = "Option::is_none")]
84 pub group_object_filter: Option<String>,
85 #[serde(rename = "group_membership_field", skip_serializing_if = "Option::is_none")]
87 pub group_membership_field: Option<String>,
88 #[serde(rename = "object_uniqueness_field", skip_serializing_if = "Option::is_none")]
90 pub object_uniqueness_field: Option<String>,
91 #[serde(rename = "sync_users", skip_serializing_if = "Option::is_none")]
92 pub sync_users: Option<bool>,
93 #[serde(rename = "sync_users_password", skip_serializing_if = "Option::is_none")]
95 pub sync_users_password: Option<bool>,
96 #[serde(rename = "sync_groups", skip_serializing_if = "Option::is_none")]
97 pub sync_groups: Option<bool>,
98 #[serde(rename = "sync_parent_group", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
99 pub sync_parent_group: Option<Option<uuid::Uuid>>,
100 #[serde(rename = "property_mappings", skip_serializing_if = "Option::is_none")]
101 pub property_mappings: Option<Vec<uuid::Uuid>>,
102 #[serde(rename = "property_mappings_group", skip_serializing_if = "Option::is_none")]
104 pub property_mappings_group: Option<Vec<uuid::Uuid>>,
105 #[serde(rename = "connectivity", deserialize_with = "Option::deserialize")]
107 pub connectivity: Option<std::collections::HashMap<String, std::collections::HashMap<String, String>>>,
108}
109
110impl LdapSource {
111 pub fn new(pk: uuid::Uuid, name: String, slug: String, component: String, verbose_name: String, verbose_name_plural: String, meta_model_name: String, managed: Option<String>, icon: Option<String>, server_uri: String, base_dn: String, connectivity: Option<std::collections::HashMap<String, std::collections::HashMap<String, String>>>) -> LdapSource {
113 LdapSource {
114 pk,
115 name,
116 slug,
117 enabled: None,
118 authentication_flow: None,
119 enrollment_flow: None,
120 component,
121 verbose_name,
122 verbose_name_plural,
123 meta_model_name,
124 policy_engine_mode: None,
125 user_matching_mode: None,
126 managed,
127 user_path_template: None,
128 icon,
129 server_uri,
130 peer_certificate: None,
131 client_certificate: None,
132 bind_cn: None,
133 start_tls: None,
134 sni: None,
135 base_dn,
136 additional_user_dn: None,
137 additional_group_dn: None,
138 user_object_filter: None,
139 group_object_filter: None,
140 group_membership_field: None,
141 object_uniqueness_field: None,
142 sync_users: None,
143 sync_users_password: None,
144 sync_groups: None,
145 sync_parent_group: None,
146 property_mappings: None,
147 property_mappings_group: None,
148 connectivity,
149 }
150 }
151}
152