Send logout notification when deleting a user (#7839)

This commit is contained in:
Cassian433 authored and GitHub committed 2026-10-29 23:16:14 +01:00
1 parent f1c7eccd4a
commit e056359a42
5 files changed
+63 -27

No files matched your search

+11 -3
View File
@@ -17,7 +17,7 @@ use crate::{
api::{
ApiResult, EmptyResult, JsonResult, Notify,
core::{log_event, two_factor},
unregister_push_device,
push_logout_to_relay, unregister_push_device,
},
auth::{ClientIp, Secure, decode_admin, encode_jwt, generate_admin_claims},
config::ConfigBuilder,
@@ -419,13 +419,21 @@ async fn get_user_json(user_id: UserId, _token: AdminToken, conn: DbConn) -> Jso
}
#[post("/users/<user_id>/delete", format = "application/json")]
async fn delete_user(user_id: UserId, token: AdminToken, conn: DbConn) -> EmptyResult {
async fn delete_user(user_id: UserId, token: AdminToken, conn: DbConn, nt: Notify<'_>) -> EmptyResult {
let user = get_user_or_404(&user_id, &conn).await?;
// Get the membership records before deleting the actual user
// Get the membership records and push devices before deleting the actual user
let memberships = Membership::find_any_state_by_user(&user_id, &conn).await;
let has_push_device = CONFIG.push_enabled() && Device::check_user_has_push_device(&user_id, &conn).await;
let res = user.delete(&conn).await;
if res.is_ok() {
nt.send_logout(&user, None, &conn).await;
if has_push_device {
push_logout_to_relay(&user, None);
}
}
for membership in memberships {
log_event(
EventType::OrganizationUserDeleted,