From a16b5afaaa5f9c546566a3d0cc0102f43b3edb95 Mon Sep 17 00:00:00 2001 From: Timshel Date: Tue, 7 Jul 2026 15:59:06 +0200 Subject: [PATCH] Org membership delete remove Invitation (#7284) Co-authored-by: Timshel --- src/api/core/organizations.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/api/core/organizations.rs b/src/api/core/organizations.rs index 736e687d..af2c45e3 100644 --- a/src/api/core/organizations.rs +++ b/src/api/core/organizations.rs @@ -1090,9 +1090,13 @@ async fn send_invite( err!(format!("User already in organization: {email}")) } - // automatically accept existing users if mail is disabled - if !CONFIG.mail_enabled() && !user.password_hash.is_empty() { - member_status = MembershipStatus::Accepted as i32; + if !CONFIG.mail_enabled() { + if user.password_hash.is_empty() { + Invitation::new(email).save(&conn).await?; + } else { + // automatically accept existing users if mail is disabled + member_status = MembershipStatus::Accepted as i32; + } } user } @@ -1714,6 +1718,15 @@ async fn delete_member_impl( if let Some(user) = User::find_by_uuid(&member_to_delete.user_uuid, conn).await { nt.send_user_update(UpdateType::SyncOrgKeys, &user, headers.device.push_uuid.as_ref(), conn).await; + + if !CONFIG.mail_enabled() + && !Membership::find_invited_by_user(&user.uuid, conn) + .await + .into_iter() + .any(|m| m.uuid != member_to_delete.uuid) + { + Invitation::take(&user.email, conn).await; + } } member_to_delete.delete(conn).await