From 4e2f38ea41579389a9bcb8aa367d471d55ccc3f6 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 11 Mar 2025 10:16:42 +0100 Subject: [PATCH] Remove user emails when deactivating a user --- crates/tasks/src/user.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/tasks/src/user.rs b/crates/tasks/src/user.rs index 9b6893399..d70e37677 100644 --- a/crates/tasks/src/user.rs +++ b/crates/tasks/src/user.rs @@ -11,7 +11,7 @@ use mas_storage::{ compat::CompatSessionFilter, oauth2::OAuth2SessionFilter, queue::{DeactivateUserJob, ReactivateUserJob}, - user::{BrowserSessionFilter, UserRepository}, + user::{BrowserSessionFilter, UserEmailFilter, UserRepository}, }; use tracing::info; @@ -81,6 +81,14 @@ impl RunnableJob for DeactivateUserJob { .map_err(JobError::retry)?; info!(affected = n, "Killed all compatibility sessions for user"); + // Delete all the email addresses for the user + let n = repo + .user_email() + .remove_bulk(UserEmailFilter::new().for_user(&user)) + .await + .map_err(JobError::retry)?; + info!(affected = n, "Removed all email addresses for user"); + // Before calling back to the homeserver, commit the changes to the database, as // we want the user to be locked out as soon as possible repo.save().await.map_err(JobError::retry)?;