From 9a8cd557fdccca08be79dd40362b1c917609a296 Mon Sep 17 00:00:00 2001 From: Stefan Melmuk Date: Thu, 16 Jan 2025 22:29:46 +0100 Subject: [PATCH] check for admin invite --- src/api/core/organizations.rs | 4 ++++ src/mail.rs | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/api/core/organizations.rs b/src/api/core/organizations.rs index 45e5e0a332..1bd42bf37c 100644 --- a/src/api/core/organizations.rs +++ b/src/api/core/organizations.rs @@ -1148,6 +1148,10 @@ async fn accept_invite( Invitation::take(&claims.email, &mut conn).await; if let (Some(member), Some(org)) = (&claims.member_id, &claims.org_id) { + if **member == "00000000-0000-0000-0000-000000000000" { + // exit early when the invitation was done via admin panel + return Ok(()); + } let Some(mut member) = Membership::find_by_uuid_and_org(member, org, &mut conn).await else { err!("Error accepting the invitation") }; diff --git a/src/mail.rs b/src/mail.rs index 68ab7413a2..ec8476b007 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -264,22 +264,22 @@ pub async fn send_invite( org_name: &str, invited_by_email: Option, ) -> EmptyResult { - let claims = generate_invite_claims( - user.uuid.clone(), - user.email.clone(), - org_id.clone(), - member_id.clone(), - invited_by_email, - ); - let invite_token = encode_jwt(&claims); let org_id = match org_id { Some(ref org_id) => org_id.as_ref(), - None => "_", + None => "00000000-0000-0000-0000-000000000000", }; let member_id = match member_id { Some(ref member_id) => member_id.as_ref(), - None => "_", + None => "00000000-0000-0000-0000-000000000000", }; + let claims = generate_invite_claims( + user.uuid.clone(), + user.email.clone(), + Some(org_id.to_string().into()), + Some(member_id.to_string().into()), + invited_by_email, + ); + let invite_token = encode_jwt(&claims); let mut query = url::Url::parse("https://query.builder").unwrap(); { let mut query_params = query.query_pairs_mut();