diff --git a/src/token.rs b/src/token.rs index 7655671..7030475 100644 --- a/src/token.rs +++ b/src/token.rs @@ -80,6 +80,7 @@ pub struct TokenResource { pub message: String, pub issuer: String, pub audiences: Vec, + pub id: uuid::Uuid, } pub const TOKEN_TYPE: &str = "JWT"; @@ -99,6 +100,15 @@ pub fn create_token( payload.set_subject(message); payload.set_issuer(issuer); payload.set_audience(audiences.clone()); + if token_resource.id.is_nil() { + match payload.set_claim("id", Some(serde_json::json!(token_resource.id))) { + Ok(_) => { + } + Err(err) => { + return Err(err); + } + } + } match get_issued() { Ok(issued) => { let expire = issued + duration; @@ -145,6 +155,7 @@ mod tests { issuer: String::from("icarus_auth_test"), message: String::from("Authorization"), audiences: vec![String::from("icarus_test")], + id: uuid::Uuid::nil(), }; let token_expiration_duration = time::Duration::hours(2);