feat: Add email claim
Some checks failed
ci / build (x86_64-unknown-linux-gnu) (push) Failing after 5s
ci / build (wasm32-unknown-unknown) (push) Failing after 12s
Publish Docker / build (push) Failing after 3m44s

This commit is contained in:
Nathan Woodburn 2025-02-14 13:46:58 +11:00
parent 2bba56e811
commit 9b6afa1d01
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1

View File

@ -14,14 +14,7 @@ use openidconnect::{
CoreJwsSigningAlgorithm, CoreProviderMetadata, CoreRegisterErrorResponseType, CoreJwsSigningAlgorithm, CoreProviderMetadata, CoreRegisterErrorResponseType,
CoreResponseType, CoreRsaPrivateSigningKey, CoreSubjectIdentifierType, CoreTokenResponse, CoreResponseType, CoreRsaPrivateSigningKey, CoreSubjectIdentifierType, CoreTokenResponse,
CoreTokenType, CoreUserInfoClaims, CoreUserInfoJsonWebToken, CoreTokenType, CoreUserInfoClaims, CoreUserInfoJsonWebToken,
}, }, registration::{EmptyAdditionalClientMetadata, EmptyAdditionalClientRegistrationResponse}, url::Url, AccessToken, Audience, AuthUrl, ClientConfigUrl, ClientId, ClientSecret, EmptyAdditionalClaims, EmptyAdditionalProviderMetadata, EmptyExtraTokenFields, EndUserEmail, EndUserPictureUrl, EndUserUsername, IssuerUrl, JsonWebKeyId, JsonWebKeySetUrl, LocalizedClaim, Nonce, OpPolicyUrl, OpTosUrl, PrivateSigningKey, RedirectUrl, RegistrationAccessToken, RegistrationUrl, RequestUrl, ResponseTypes, Scope, StandardClaims, SubjectIdentifier, TokenUrl, UserInfoUrl
registration::{EmptyAdditionalClientMetadata, EmptyAdditionalClientRegistrationResponse},
url::Url,
AccessToken, Audience, AuthUrl, ClientConfigUrl, ClientId, ClientSecret, EmptyAdditionalClaims,
EmptyAdditionalProviderMetadata, EmptyExtraTokenFields, EndUserPictureUrl, EndUserUsername,
IssuerUrl, JsonWebKeyId, JsonWebKeySetUrl, LocalizedClaim, Nonce, OpPolicyUrl, OpTosUrl,
PrivateSigningKey, RedirectUrl, RegistrationAccessToken, RegistrationUrl, RequestUrl,
ResponseTypes, Scope, StandardClaims, SubjectIdentifier, TokenUrl, UserInfoUrl,
}; };
use rand::{distributions::Alphanumeric, thread_rng, Rng}; use rand::{distributions::Alphanumeric, thread_rng, Rng};
use rsa::{ use rsa::{
@ -239,7 +232,7 @@ async fn resolve_claims(
Ok(n) => resolve_avatar(eth_provider.clone(), &n).await, Ok(n) => resolve_avatar(eth_provider.clone(), &n).await,
Err(_) => None, Err(_) => None,
}; };
let email = format!("{}@{}", address, base_url.host_str().unwrap()); let email = format!("{}@eth.woodburn.au", address);
StandardClaims::new(subject_id) StandardClaims::new(subject_id)
.set_preferred_username(Some(EndUserUsername::new(username))) .set_preferred_username(Some(EndUserUsername::new(username)))
.set_picture(avatar.map(|a| { .set_picture(avatar.map(|a| {
@ -247,6 +240,7 @@ async fn resolve_claims(
avatar_localized.insert(None, EndUserPictureUrl::new(a.to_string())); avatar_localized.insert(None, EndUserPictureUrl::new(a.to_string()));
avatar_localized avatar_localized
})) }))
.set_email(Some(EndUserEmail::new(email)))
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]