From ce55f15b7fc3a790dc93156c477d28fdc0ce5ad5 Mon Sep 17 00:00:00 2001 From: Stefan Melmuk Date: Fri, 16 Feb 2024 18:22:03 +0100 Subject: [PATCH] delete emergency access invitations if an invited user is deleted in the /admin panel their emergency access invitation will remain in the database which causes the to_json_grantee_details fn to panic --- src/db/models/emergency_access.rs | 7 +++++++ src/db/models/user.rs | 1 + 2 files changed, 8 insertions(+) diff --git a/src/db/models/emergency_access.rs b/src/db/models/emergency_access.rs index 3fb0c4c7..f91b133c 100644 --- a/src/db/models/emergency_access.rs +++ b/src/db/models/emergency_access.rs @@ -214,6 +214,13 @@ impl EmergencyAccess { Ok(()) } + pub async fn delete_all_by_grantee_email(grantee_email: &str, conn: &mut DbConn) -> EmptyResult { + for ea in Self::find_all_invited_by_grantee_email(grantee_email, conn).await { + ea.delete(conn).await?; + } + Ok(()) + } + pub async fn delete(self, conn: &mut DbConn) -> EmptyResult { User::update_uuid_revision(&self.grantor_uuid, conn).await; diff --git a/src/db/models/user.rs b/src/db/models/user.rs index feb09438..bf7dad32 100644 --- a/src/db/models/user.rs +++ b/src/db/models/user.rs @@ -311,6 +311,7 @@ impl User { Send::delete_all_by_user(&self.uuid, conn).await?; EmergencyAccess::delete_all_by_user(&self.uuid, conn).await?; + EmergencyAccess::delete_all_by_grantee_email(&self.email, conn).await?; UserOrganization::delete_all_by_user(&self.uuid, conn).await?; Cipher::delete_all_by_user(&self.uuid, conn).await?; Favorite::delete_all_by_user(&self.uuid, conn).await?;