Skip to content

Commit 0e03f76

Browse files
mcalingheeodelcroi
authored andcommitted
use of UpstreamOAuthProviderLocalpartPreference
1 parent ec31000 commit 0e03f76

File tree

6 files changed

+31
-19
lines changed

6 files changed

+31
-19
lines changed

crates/cli/src/sync.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,18 @@ fn map_claims_imports(
5757
subject: mas_data_model::UpstreamOAuthProviderSubjectPreference {
5858
template: config.subject.template.clone(),
5959
},
60-
localpart: mas_data_model::UpstreamOAuthProviderImportPreference {
60+
localpart: mas_data_model::UpstreamOAuthProviderLocalpartPreference {
6161
action: map_import_action(config.localpart.action),
6262
template: config.localpart.template.clone(),
6363
on_conflict: map_import_on_conflict(config.localpart.on_conflict),
6464
},
6565
displayname: mas_data_model::UpstreamOAuthProviderImportPreference {
6666
action: map_import_action(config.displayname.action),
6767
template: config.displayname.template.clone(),
68-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
6968
},
7069
email: mas_data_model::UpstreamOAuthProviderImportPreference {
7170
action: map_import_action(config.email.action),
7271
template: config.email.template.clone(),
73-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
7472
},
7573
account_name: mas_data_model::UpstreamOAuthProviderSubjectPreference {
7674
template: config.account_name.template.clone(),

crates/config/src/sections/upstream_oauth2.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,6 @@ impl ConfigurationSection for UpstreamOAuth2Config {
128128
"The field `action` must be either `force` or `require` when `on_conflict` is set to `add`",
129129
));
130130
}
131-
132-
//TODO : check that claims imports use on_conflict where it is not
133-
// supported?
134131
}
135132

136133
Ok(())

crates/data-model/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ pub use self::{
4242
UpstreamOAuthAuthorizationSession, UpstreamOAuthAuthorizationSessionState,
4343
UpstreamOAuthLink, UpstreamOAuthProvider, UpstreamOAuthProviderClaimsImports,
4444
UpstreamOAuthProviderDiscoveryMode, UpstreamOAuthProviderImportAction,
45-
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderOnConflict, UpstreamOAuthProviderOnBackchannelLogout,
46-
UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderResponseMode,
47-
UpstreamOAuthProviderSubjectPreference, UpstreamOAuthProviderTokenAuthMethod,
45+
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference, UpstreamOAuthProviderOnBackchannelLogout,
46+
UpstreamOAuthProviderOnConflict, UpstreamOAuthProviderPkceMode,
47+
UpstreamOAuthProviderResponseMode, UpstreamOAuthProviderSubjectPreference,
48+
UpstreamOAuthProviderTokenAuthMethod,
4849
},
4950
user_agent::{DeviceType, UserAgent},
5051
users::{

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub use self::{
1616
ImportAction as UpstreamOAuthProviderImportAction,
1717
ImportPreference as UpstreamOAuthProviderImportPreference,
1818
OnBackchannelLogout as UpstreamOAuthProviderOnBackchannelLogout,
19+
LocalpartPreference as UpstreamOAuthProviderLocalpartPreference,
1920
OnConflict as UpstreamOAuthProviderOnConflict, PkceMode as UpstreamOAuthProviderPkceMode,
2021
ResponseMode as UpstreamOAuthProviderResponseMode,
2122
SubjectPreference as UpstreamOAuthProviderSubjectPreference,

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ pub struct ClaimsImports {
313313
pub subject: SubjectPreference,
314314

315315
#[serde(default)]
316-
pub localpart: ImportPreference,
316+
pub localpart: LocalpartPreference,
317317

318318
#[serde(default)]
319319
pub displayname: ImportPreference,
@@ -333,7 +333,7 @@ pub struct SubjectPreference {
333333
}
334334

335335
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
336-
pub struct ImportPreference {
336+
pub struct LocalpartPreference {
337337
#[serde(default)]
338338
pub action: ImportAction,
339339

@@ -344,6 +344,23 @@ pub struct ImportPreference {
344344
pub on_conflict: OnConflict,
345345
}
346346

347+
impl std::ops::Deref for LocalpartPreference {
348+
type Target = ImportAction;
349+
350+
fn deref(&self) -> &Self::Target {
351+
&self.action
352+
}
353+
}
354+
355+
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
356+
pub struct ImportPreference {
357+
#[serde(default)]
358+
pub action: ImportAction,
359+
360+
#[serde(default)]
361+
pub template: Option<String>,
362+
}
363+
347364
impl std::ops::Deref for ImportPreference {
348365
type Target = ImportAction;
349366

crates/handlers/src/upstream_oauth2/link.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ pub(crate) async fn post(
677677
}
678678
let context = context.build();
679679

680-
// Check both if is it `force` or `require`
680+
// `is_forced` checks both if is it `force` or `require`
681681
if !provider.claims_imports.localpart.is_forced() {
682682
//Claims import for `localpart` should be `require` or `force` at this stage
683683
return Err(RouteError::InvalidFormAction);
@@ -1004,7 +1004,8 @@ mod tests {
10041004
use hyper::{Request, StatusCode, header::CONTENT_TYPE};
10051005
use mas_data_model::{
10061006
UpstreamOAuthAuthorizationSession, UpstreamOAuthLink, UpstreamOAuthProviderClaimsImports,
1007-
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderTokenAuthMethod, User,
1007+
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
1008+
UpstreamOAuthProviderTokenAuthMethod, User,
10081009
};
10091010
use mas_iana::jose::JsonWebSignatureAlg;
10101011
use mas_jose::jwt::{JsonWebSignatureHeader, Jwt};
@@ -1030,15 +1031,14 @@ mod tests {
10301031
let cookies = CookieHelper::new();
10311032

10321033
let claims_imports = UpstreamOAuthProviderClaimsImports {
1033-
localpart: UpstreamOAuthProviderImportPreference {
1034+
localpart: UpstreamOAuthProviderLocalpartPreference {
10341035
action: mas_data_model::UpstreamOAuthProviderImportAction::Force,
10351036
template: None,
10361037
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
10371038
},
10381039
email: UpstreamOAuthProviderImportPreference {
10391040
action: mas_data_model::UpstreamOAuthProviderImportAction::Force,
10401041
template: None,
1041-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
10421042
},
10431043
..UpstreamOAuthProviderClaimsImports::default()
10441044
};
@@ -1232,15 +1232,14 @@ mod tests {
12321232
let cookies = CookieHelper::new();
12331233

12341234
let claims_imports = UpstreamOAuthProviderClaimsImports {
1235-
localpart: UpstreamOAuthProviderImportPreference {
1235+
localpart: UpstreamOAuthProviderLocalpartPreference {
12361236
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
12371237
template: None,
12381238
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::Add,
12391239
},
12401240
email: UpstreamOAuthProviderImportPreference {
12411241
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
12421242
template: None,
1243-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
12441243
},
12451244
..UpstreamOAuthProviderClaimsImports::default()
12461245
};
@@ -1387,15 +1386,14 @@ mod tests {
13871386
let cookies = CookieHelper::new();
13881387

13891388
let claims_imports = UpstreamOAuthProviderClaimsImports {
1390-
localpart: UpstreamOAuthProviderImportPreference {
1389+
localpart: UpstreamOAuthProviderLocalpartPreference {
13911390
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13921391
template: None,
13931392
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
13941393
},
13951394
email: UpstreamOAuthProviderImportPreference {
13961395
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13971396
template: None,
1398-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
13991397
},
14001398
..UpstreamOAuthProviderClaimsImports::default()
14011399
};

0 commit comments

Comments
 (0)