From 414eb35419f84ab370c0d9acc3af72d72b67462c Mon Sep 17 00:00:00 2001 From: Alexander Yuhimenko Date: Tue, 11 Jul 2023 23:11:57 +0100 Subject: [PATCH] Support standard OIDC birthdate claim (#120) Fixes #119 --- src/claims.rs | 6 ++++++ src/id_token.rs | 5 +++++ src/user_info.rs | 1 + src/verification.rs | 1 + 4 files changed, 13 insertions(+) diff --git a/src/claims.rs b/src/claims.rs index 7af80630..386e78c2 100644 --- a/src/claims.rs +++ b/src/claims.rs @@ -105,6 +105,7 @@ where pub(crate) email_verified: Option, pub(crate) gender: Option, pub(crate) birthday: Option, + pub(crate) birthdate: Option, pub(crate) zoneinfo: Option, pub(crate) locale: Option, pub(crate) phone_number: Option, @@ -137,6 +138,7 @@ where email_verified: None, gender: None, birthday: None, + birthdate: None, zoneinfo: None, locale: None, phone_number: None, @@ -178,6 +180,7 @@ where set_email_verified -> email_verified[Option], set_gender -> gender[Option], set_birthday -> birthday[Option], + set_birthdate -> birthdate[Option], set_zoneinfo -> zoneinfo[Option], set_locale -> locale[Option], set_phone_number -> phone_number[Option], @@ -210,6 +213,7 @@ where | ("email_verified", None) | ("gender", None) | ("birthday", None) + | ("birthdate", None) | ("zoneinfo", None) | ("locale", None) | ("phone_number", None) @@ -261,6 +265,7 @@ where [Option(Boolean(email_verified))] [Option(gender)] [Option(birthday)] + [Option(birthdate)] [Option(zoneinfo)] [Option(locale)] [Option(phone_number)] @@ -299,6 +304,7 @@ where [Option(email_verified)] [Option(gender)] [Option(birthday)] + [Option(birthdate)] [Option(zoneinfo)] [Option(locale)] [Option(phone_number)] diff --git a/src/id_token.rs b/src/id_token.rs index 0ee77597..a478379f 100644 --- a/src/id_token.rs +++ b/src/id_token.rs @@ -313,6 +313,7 @@ where set_email_verified -> email_verified[Option], set_gender -> gender[Option], set_birthday -> birthday[Option], + set_birthdate -> birthdate[Option], set_zoneinfo -> zoneinfo[Option], set_locale -> locale[Option], set_phone_number -> phone_number[Option], @@ -621,6 +622,7 @@ mod tests { assert_eq!(claims.email_verified(), None); assert_eq!(claims.gender(), None); assert_eq!(claims.birthday(), None); + assert_eq!(claims.birthdate(), None); assert_eq!(claims.zoneinfo(), None); assert_eq!(claims.locale(), None); assert_eq!(claims.phone_number(), None); @@ -672,6 +674,7 @@ mod tests { \"email_verified\":true,\ \"gender\":\"male\",\ \"birthday\":\"1956-05-12\",\ + \"birthdate\":\"1956-07-12\",\ \"zoneinfo\":\"America/Los_Angeles\",\ \"locale\":\"en-US\",\ \"phone_number\":\"+1 (555) 555-5555\",\ @@ -808,6 +811,7 @@ mod tests { email_verified: Some(true), gender: Some(CoreGenderClaim::new("male".to_string())), birthday: Some(EndUserBirthday::new("1956-05-12".to_string())), + birthdate: Some(EndUserBirthday::new("1956-07-12".to_string())), zoneinfo: Some(EndUserTimezone::new("America/Los_Angeles".to_string())), locale: Some(LanguageTag::new("en-US".to_string())), phone_number: Some(EndUserPhoneNumber::new("+1 (555) 555-5555".to_string())), @@ -885,6 +889,7 @@ mod tests { assert_eq!(claims.email_verified(), new_claims.email_verified()); assert_eq!(claims.gender(), new_claims.gender()); assert_eq!(claims.birthday(), new_claims.birthday()); + assert_eq!(claims.birthdate(), new_claims.birthdate()); assert_eq!(claims.zoneinfo(), new_claims.zoneinfo()); assert_eq!(claims.locale(), new_claims.locale()); assert_eq!(claims.phone_number(), new_claims.phone_number(),); diff --git a/src/user_info.rs b/src/user_info.rs index 5f8f5b25..87ab41b0 100644 --- a/src/user_info.rs +++ b/src/user_info.rs @@ -291,6 +291,7 @@ where set_email_verified -> email_verified[Option], set_gender -> gender[Option], set_birthday -> birthday[Option], + set_birthdate -> birthdate[Option], set_zoneinfo -> zoneinfo[Option], set_locale -> locale[Option], set_phone_number -> phone_number[Option], diff --git a/src/verification.rs b/src/verification.rs index 8b3e1203..7e3ecb88 100644 --- a/src/verification.rs +++ b/src/verification.rs @@ -2081,6 +2081,7 @@ mod tests { email_verified: None, gender: None, birthday: None, + birthdate: None, zoneinfo: None, locale: None, phone_number: None,