1use crate::models;
12
13#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct OAuthSource {
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 = "provider_type")]
58 pub provider_type: models::ProviderTypeEnum,
59 #[serde(rename = "request_token_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub request_token_url: Option<Option<String>>,
62 #[serde(rename = "authorization_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
64 pub authorization_url: Option<Option<String>>,
65 #[serde(rename = "access_token_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
67 pub access_token_url: Option<Option<String>>,
68 #[serde(rename = "profile_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
70 pub profile_url: Option<Option<String>>,
71 #[serde(rename = "consumer_key")]
72 pub consumer_key: String,
73 #[serde(rename = "callback_url")]
75 pub callback_url: String,
76 #[serde(rename = "additional_scopes", skip_serializing_if = "Option::is_none")]
77 pub additional_scopes: Option<String>,
78 #[serde(rename = "type")]
79 pub r#type: Box<models::SourceType>,
80 #[serde(rename = "oidc_well_known_url", skip_serializing_if = "Option::is_none")]
81 pub oidc_well_known_url: Option<String>,
82 #[serde(rename = "oidc_jwks_url", skip_serializing_if = "Option::is_none")]
83 pub oidc_jwks_url: Option<String>,
84 #[serde(rename = "oidc_jwks", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
85 pub oidc_jwks: Option<Option<serde_json::Value>>,
86}
87
88impl OAuthSource {
89 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>, provider_type: models::ProviderTypeEnum, consumer_key: String, callback_url: String, r#type: models::SourceType) -> OAuthSource {
91 OAuthSource {
92 pk,
93 name,
94 slug,
95 enabled: None,
96 authentication_flow: None,
97 enrollment_flow: None,
98 component,
99 verbose_name,
100 verbose_name_plural,
101 meta_model_name,
102 policy_engine_mode: None,
103 user_matching_mode: None,
104 managed,
105 user_path_template: None,
106 icon,
107 provider_type,
108 request_token_url: None,
109 authorization_url: None,
110 access_token_url: None,
111 profile_url: None,
112 consumer_key,
113 callback_url,
114 additional_scopes: None,
115 r#type: Box::new(r#type),
116 oidc_well_known_url: None,
117 oidc_jwks_url: None,
118 oidc_jwks: None,
119 }
120 }
121}
122