tuwunel_api_admin/users/
deactivate_account.rs1use axum::extract::State;
2use synapse_admin_api::users::deactivate_account::v1 as deactivate_account;
3use tuwunel_core::{Err, Result};
4
5use crate::{Ruma, refuse_server_user, require_admin};
6
7pub(crate) async fn admin_deactivate_account_route(
9 State(services): State<crate::State>,
10 body: Ruma<deactivate_account::Request>,
11) -> Result<deactivate_account::Response> {
12 require_admin(&services, body.sender_user()).await?;
13
14 if !services.globals.user_is_local(&body.user_id) {
15 return Err!(Request(InvalidParam("Can only deactivate local users")));
16 }
17
18 refuse_server_user(services, &body.user_id)?;
19
20 if !services.users.exists(&body.user_id).await {
21 return Err!(Request(NotFound("User not found")));
22 }
23
24 services
25 .deactivate
26 .full_deactivate(&body.user_id, body.erase)
27 .await?;
28
29 Ok(deactivate_account::Response::new("success".to_owned()))
30}