Skip to content

Commit e0ca220

Browse files
mcalingheeodelcroi
authored andcommitted
use of UpstreamOAuthProviderLocalpartPreference
1 parent 9c26ff4 commit e0ca220

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
@@ -121,9 +121,6 @@ impl ConfigurationSection for UpstreamOAuth2Config {
121121
"The field `action` must be either `force` or `require` when `on_conflict` is set to `add`",
122122
));
123123
}
124-
125-
//TODO : check that claims imports use on_conflict where it is not
126-
// supported?
127124
}
128125

129126
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,
46-
UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderResponseMode,
47-
UpstreamOAuthProviderSubjectPreference, UpstreamOAuthProviderTokenAuthMethod,
45+
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
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
@@ -15,6 +15,7 @@ pub use self::{
1515
DiscoveryMode as UpstreamOAuthProviderDiscoveryMode,
1616
ImportAction as UpstreamOAuthProviderImportAction,
1717
ImportPreference as UpstreamOAuthProviderImportPreference,
18+
LocalpartPreference as UpstreamOAuthProviderLocalpartPreference,
1819
OnConflict as UpstreamOAuthProviderOnConflict, PkceMode as UpstreamOAuthProviderPkceMode,
1920
ResponseMode as UpstreamOAuthProviderResponseMode,
2021
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
@@ -270,7 +270,7 @@ pub struct ClaimsImports {
270270
pub subject: SubjectPreference,
271271

272272
#[serde(default)]
273-
pub localpart: ImportPreference,
273+
pub localpart: LocalpartPreference,
274274

275275
#[serde(default)]
276276
pub displayname: ImportPreference,
@@ -290,7 +290,7 @@ pub struct SubjectPreference {
290290
}
291291

292292
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
293-
pub struct ImportPreference {
293+
pub struct LocalpartPreference {
294294
#[serde(default)]
295295
pub action: ImportAction,
296296

@@ -301,6 +301,23 @@ pub struct ImportPreference {
301301
pub on_conflict: OnConflict,
302302
}
303303

304+
impl std::ops::Deref for LocalpartPreference {
305+
type Target = ImportAction;
306+
307+
fn deref(&self) -> &Self::Target {
308+
&self.action
309+
}
310+
}
311+
312+
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
313+
pub struct ImportPreference {
314+
#[serde(default)]
315+
pub action: ImportAction,
316+
317+
#[serde(default)]
318+
pub template: Option<String>,
319+
}
320+
304321
impl std::ops::Deref for ImportPreference {
305322
type Target = ImportAction;
306323

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
};
@@ -1189,15 +1189,14 @@ mod tests {
11891189
let cookies = CookieHelper::new();
11901190

11911191
let claims_imports = UpstreamOAuthProviderClaimsImports {
1192-
localpart: UpstreamOAuthProviderImportPreference {
1192+
localpart: UpstreamOAuthProviderLocalpartPreference {
11931193
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
11941194
template: None,
11951195
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::Add,
11961196
},
11971197
email: UpstreamOAuthProviderImportPreference {
11981198
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
11991199
template: None,
1200-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
12011200
},
12021201
..UpstreamOAuthProviderClaimsImports::default()
12031202
};
@@ -1341,15 +1340,14 @@ mod tests {
13411340
let cookies = CookieHelper::new();
13421341

13431342
let claims_imports = UpstreamOAuthProviderClaimsImports {
1344-
localpart: UpstreamOAuthProviderImportPreference {
1343+
localpart: UpstreamOAuthProviderLocalpartPreference {
13451344
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13461345
template: None,
13471346
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
13481347
},
13491348
email: UpstreamOAuthProviderImportPreference {
13501349
action: mas_data_model::UpstreamOAuthProviderImportAction::Require,
13511350
template: None,
1352-
on_conflict: mas_data_model::UpstreamOAuthProviderOnConflict::default(),
13531351
},
13541352
..UpstreamOAuthProviderClaimsImports::default()
13551353
};

0 commit comments

Comments
 (0)