Skip to content

Commit ffd2144

Browse files
Add metadata to the JWT (#3)
1 parent a618a28 commit ffd2144

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

src/propelauth/token.rs

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use jsonwebtoken::{Algorithm, decode, DecodingKey, Validation};
1+
use jsonwebtoken::{decode, Algorithm, DecodingKey, Validation};
22

33
use crate::models::AuthTokenVerificationMetadata;
44
use crate::propelauth::errors::{
@@ -68,7 +68,7 @@ mod tests {
6868
use std::collections::HashMap;
6969
use std::time::SystemTime;
7070

71-
use jsonwebtoken::{Algorithm, encode, EncodingKey, Header};
71+
use jsonwebtoken::{encode, Algorithm, EncodingKey, Header};
7272
use openssl::rsa::Rsa;
7373

7474
use crate::models::AuthTokenVerificationMetadata;
@@ -109,6 +109,10 @@ mod tests {
109109
fn validation_gets_user_with_orgs_back() {
110110
let expected_user = User {
111111
user_id: "bf7b3bc0-739d-45a2-ba60-60655249a5b0".to_string(),
112+
email: "easteregg@propelauth.com".to_string(),
113+
first_name: Some("Easter".to_string()),
114+
last_name: Some("Egg".to_string()),
115+
username: None,
112116
org_id_to_org_member_info: get_org_id_to_org_member_info(),
113117
legacy_user_id: Some("legacy_id".to_string()),
114118
impersonated_user_id: None,
@@ -129,6 +133,10 @@ mod tests {
129133
expected_user.org_id_to_org_member_info
130134
);
131135
assert_eq!(user.legacy_user_id, expected_user.legacy_user_id);
136+
assert_eq!(user.email, expected_user.email);
137+
assert_eq!(user.first_name, expected_user.first_name);
138+
assert_eq!(user.last_name, expected_user.last_name);
139+
assert_eq!(user.username, expected_user.username);
132140
}
133141

134142
#[test]
@@ -212,6 +220,10 @@ mod tests {
212220
fn validation_checks_orgs_correctly() {
213221
let expected_user = User {
214222
user_id: "bf7b3bc0-739d-45a2-ba60-60655249a5b0".to_string(),
223+
email: "easteregg@propelauth.com".to_string(),
224+
first_name: Some("Easter".to_string()),
225+
last_name: None,
226+
username: None,
215227
org_id_to_org_member_info: get_org_id_to_org_member_info(),
216228
legacy_user_id: Some("legacy_id".to_string()),
217229
impersonated_user_id: None,
@@ -369,6 +381,10 @@ mod tests {
369381
fn org_validation_can_throw_unauthorized() {
370382
let expected_user = User {
371383
user_id: "bf7b3bc0-739d-45a2-ba60-60655249a5b0".to_string(),
384+
email: "easteregg@propelauth.com".to_string(),
385+
first_name: None,
386+
last_name: None,
387+
username: None,
372388
org_id_to_org_member_info: get_org_id_to_org_member_info(),
373389
legacy_user_id: Some("legacy_id".to_string()),
374390
impersonated_user_id: None,
@@ -416,6 +432,10 @@ mod tests {
416432
exp,
417433
iss: ISSUER.to_string(),
418434
user_id: user.user_id,
435+
email: user.email,
436+
first_name: user.first_name,
437+
last_name: user.last_name,
438+
username: user.username,
419439
org_id_to_org_member_info: user.org_id_to_org_member_info,
420440
legacy_user_id: user.legacy_user_id,
421441
};
@@ -499,9 +519,18 @@ mod tests {
499519
exp: i64,
500520
iss: String,
501521
user_id: String,
522+
523+
email: String,
524+
#[serde(skip_serializing_if = "Option::is_none")]
525+
first_name: Option<String>,
526+
#[serde(skip_serializing_if = "Option::is_none")]
527+
last_name: Option<String>,
528+
#[serde(skip_serializing_if = "Option::is_none")]
529+
username: Option<String>,
530+
502531
#[serde(skip_serializing_if = "HashMap::is_empty")]
503-
pub org_id_to_org_member_info: HashMap<String, OrgMemberInfo>,
532+
org_id_to_org_member_info: HashMap<String, OrgMemberInfo>,
504533
#[serde(skip_serializing_if = "Option::is_none")]
505-
pub legacy_user_id: Option<String>,
534+
legacy_user_id: Option<String>,
506535
}
507536
}

src/propelauth/token_models.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ pub struct User {
1414
#[serde(default)]
1515
pub org_id_to_org_member_info: HashMap<String, OrgMemberInfo>,
1616

17+
pub email: String,
18+
#[serde(default)]
19+
pub first_name: Option<String>,
20+
#[serde(default)]
21+
pub last_name: Option<String>,
22+
#[serde(default)]
23+
pub username: Option<String>,
24+
1725
/** If you used our migration APIs to migrate this user from a different system,
1826
* this is their original ID from that system. */
1927
#[serde(default)]

0 commit comments

Comments
 (0)