1use crate::models;
12
13#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct SamlSource {
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 = "pre_authentication_flow")]
59 pub pre_authentication_flow: uuid::Uuid,
60 #[serde(rename = "issuer", skip_serializing_if = "Option::is_none")]
62 pub issuer: Option<String>,
63 #[serde(rename = "sso_url")]
65 pub sso_url: String,
66 #[serde(rename = "slo_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
68 pub slo_url: Option<Option<String>>,
69 #[serde(rename = "allow_idp_initiated", skip_serializing_if = "Option::is_none")]
71 pub allow_idp_initiated: Option<bool>,
72 #[serde(rename = "name_id_policy", skip_serializing_if = "Option::is_none")]
74 pub name_id_policy: Option<models::NameIdPolicyEnum>,
75 #[serde(rename = "binding_type", skip_serializing_if = "Option::is_none")]
76 pub binding_type: Option<models::BindingTypeEnum>,
77 #[serde(rename = "verification_kp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
79 pub verification_kp: Option<Option<uuid::Uuid>>,
80 #[serde(rename = "signing_kp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
82 pub signing_kp: Option<Option<uuid::Uuid>>,
83 #[serde(rename = "digest_algorithm", skip_serializing_if = "Option::is_none")]
84 pub digest_algorithm: Option<models::DigestAlgorithmEnum>,
85 #[serde(rename = "signature_algorithm", skip_serializing_if = "Option::is_none")]
86 pub signature_algorithm: Option<models::SignatureAlgorithmEnum>,
87 #[serde(rename = "temporary_user_delete_after", skip_serializing_if = "Option::is_none")]
89 pub temporary_user_delete_after: Option<String>,
90}
91
92impl SamlSource {
93 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>, pre_authentication_flow: uuid::Uuid, sso_url: String) -> SamlSource {
95 SamlSource {
96 pk,
97 name,
98 slug,
99 enabled: None,
100 authentication_flow: None,
101 enrollment_flow: None,
102 component,
103 verbose_name,
104 verbose_name_plural,
105 meta_model_name,
106 policy_engine_mode: None,
107 user_matching_mode: None,
108 managed,
109 user_path_template: None,
110 icon,
111 pre_authentication_flow,
112 issuer: None,
113 sso_url,
114 slo_url: None,
115 allow_idp_initiated: None,
116 name_id_policy: None,
117 binding_type: None,
118 verification_kp: None,
119 signing_kp: None,
120 digest_algorithm: None,
121 signature_algorithm: None,
122 temporary_user_delete_after: None,
123 }
124 }
125}
126