Skip to content

Commit 319c22e

Browse files
committed
add default to OnConflict
1 parent a61f34a commit 319c22e

File tree

4 files changed

+24
-38
lines changed

4 files changed

+24
-38
lines changed

crates/cli/src/sync.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ fn map_import_action(
3838
}
3939

4040
fn map_import_on_conflict(
41-
maybe_config: Option<mas_config::UpstreamOAuth2OnConflict>,
42-
) -> Option<mas_data_model::UpstreamOAuthProviderOnConflict> {
43-
match maybe_config {
44-
None => None,
45-
Some(mas_config::UpstreamOAuth2OnConflict::Add) => {
46-
Some(mas_data_model::UpstreamOAuthProviderOnConflict::Add)
41+
config: mas_config::UpstreamOAuth2OnConflict,
42+
) -> mas_data_model::UpstreamOAuthProviderOnConflict {
43+
match config {
44+
mas_config::UpstreamOAuth2OnConflict::Add => {
45+
mas_data_model::UpstreamOAuthProviderOnConflict::Add
4746
}
48-
Some(mas_config::UpstreamOAuth2OnConflict::Fail) => {
49-
Some(mas_data_model::UpstreamOAuthProviderOnConflict::Fail)
47+
mas_config::UpstreamOAuth2OnConflict::Fail => {
48+
mas_data_model::UpstreamOAuthProviderOnConflict::Fail
5049
}
5150
}
5251
}
@@ -66,12 +65,12 @@ fn map_claims_imports(
6665
displayname: mas_data_model::UpstreamOAuthProviderImportPreference {
6766
action: map_import_action(config.displayname.action),
6867
template: config.displayname.template.clone(),
69-
on_conflict: None,
68+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
7069
},
7170
email: mas_data_model::UpstreamOAuthProviderImportPreference {
7271
action: map_import_action(config.email.action),
7372
template: config.email.template.clone(),
74-
on_conflict: None,
73+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
7574
},
7675
account_name: mas_data_model::UpstreamOAuthProviderSubjectPreference {
7776
template: config.account_name.template.clone(),

crates/config/src/sections/upstream_oauth2.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,7 @@ impl ConfigurationSection for UpstreamOAuth2Config {
111111
}
112112
}
113113

114-
if provider.claims_imports.localpart.on_conflict.is_some()
115-
&& !provider
116-
.claims_imports
117-
.localpart
118-
.on_conflict
119-
.unwrap()
120-
.is_fail()
114+
if !provider.claims_imports.localpart.on_conflict.is_default()
121115
&& !matches!(
122116
provider.claims_imports.localpart.action,
123117
ImportAction::Force | ImportAction::Require
@@ -217,8 +211,9 @@ pub enum OnConflict {
217211
}
218212

219213
impl OnConflict {
220-
const fn is_fail(self) -> bool {
221-
matches!(&self, OnConflict::Fail)
214+
#[allow(clippy::trivially_copy_pass_by_ref)]
215+
const fn is_default(&self) -> bool {
216+
matches!(self, OnConflict::Fail)
222217
}
223218
}
224219

@@ -252,8 +247,8 @@ pub struct LocalpartImportPreference {
252247
pub template: Option<String>,
253248

254249
/// How to handle conflicts on the claim, default value is `Fail`
255-
#[serde(default, skip_serializing_if = "Option::is_none")]
256-
pub on_conflict: Option<OnConflict>,
250+
#[serde(default, skip_serializing_if = "OnConflict::is_default")]
251+
pub on_conflict: OnConflict,
257252
}
258253

259254
impl LocalpartImportPreference {

crates/data-model/src/upstream_oauth2/provider.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ pub struct ImportPreference {
298298
pub template: Option<String>,
299299

300300
#[serde(default)]
301-
pub on_conflict: Option<OnConflict>,
301+
pub on_conflict: OnConflict,
302302
}
303303

304304
impl std::ops::Deref for ImportPreference {

crates/handlers/src/upstream_oauth2/link.rs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -476,11 +476,7 @@ pub(crate) async fn get(
476476
if let Some(existing_user) = maybe_existing_user {
477477
// The mapper returned a username which already exists, but isn't
478478
// linked to this upstream user.
479-
let on_conflict = provider
480-
.claims_imports
481-
.localpart
482-
.on_conflict
483-
.unwrap_or_default();
479+
let on_conflict = provider.claims_imports.localpart.on_conflict;
484480

485481
match on_conflict {
486482
UpstreamOAuthProviderOnConflict::Fail => {
@@ -706,11 +702,7 @@ pub(crate) async fn post(
706702

707703
let user = maybe_user.unwrap();
708704

709-
let on_conflict = provider
710-
.claims_imports
711-
.localpart
712-
.on_conflict
713-
.unwrap_or_default();
705+
let on_conflict = provider.claims_imports.localpart.on_conflict;
714706

715707
match on_conflict {
716708
UpstreamOAuthProviderOnConflict::Fail => {
@@ -1043,12 +1035,12 @@ mod tests {
10431035
localpart: UpstreamOAuthProviderImportPreference {
10441036
action: mas_data_model::UpstreamOAuthProviderImportAction::Force,
10451037
template: None,
1046-
on_conflict: None,
1038+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
10471039
},
10481040
email: UpstreamOAuthProviderImportPreference {
10491041
action: mas_data_model::UpstreamOAuthProviderImportAction::Force,
10501042
template: None,
1051-
on_conflict: None,
1043+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
10521044
},
10531045
..UpstreamOAuthProviderClaimsImports::default()
10541046
};
@@ -1202,12 +1194,12 @@ mod tests {
12021194
localpart: UpstreamOAuthProviderImportPreference {
12031195
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
12041196
template: None,
1205-
on_conflict: Some(mas_data_model::UpstreamOAuthProviderOnConflict::Add),
1197+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::Add,
12061198
},
12071199
email: UpstreamOAuthProviderImportPreference {
12081200
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
12091201
template: None,
1210-
on_conflict: None,
1202+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
12111203
},
12121204
..UpstreamOAuthProviderClaimsImports::default()
12131205
};
@@ -1354,12 +1346,12 @@ mod tests {
13541346
localpart: UpstreamOAuthProviderImportPreference {
13551347
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13561348
template: None,
1357-
on_conflict: Some(mas_data_model::UpstreamOAuthProviderOnConflict::Fail),
1349+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::Fail,
13581350
},
13591351
email: UpstreamOAuthProviderImportPreference {
13601352
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13611353
template: None,
1362-
on_conflict: None,
1354+
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
13631355
},
13641356
..UpstreamOAuthProviderClaimsImports::default()
13651357
};

0 commit comments

Comments
 (0)