tuwunel_api/client/account/
deactivate.rs1use axum::extract::State;
2use futures::FutureExt;
3use ruma::api::client::account::{ThirdPartyIdRemovalStatus, deactivate};
4use tuwunel_core::{Result, info};
5
6use crate::{ClientIp, Ruma, router::auth_uiaa};
7
8#[tracing::instrument(skip_all, fields(%client), name = "deactivate")]
20pub(crate) async fn deactivate_route(
21 State(services): State<crate::State>,
22 ClientIp(client): ClientIp,
23 body: Ruma<deactivate::v3::Request>,
24) -> Result<deactivate::v3::Response> {
25 let ref sender_user = auth_uiaa(&services, &body).await?;
26
27 services
28 .deactivate
29 .full_deactivate(sender_user, body.erase)
30 .boxed()
31 .await?;
32
33 info!("User {sender_user} deactivated their account.");
34 if services.server.config.admin_room_notices {
35 services
36 .admin
37 .notice(&format!("User {sender_user} deactivated their account."))
38 .await;
39 }
40
41 Ok(deactivate::v3::Response {
42 id_server_unbind_result: ThirdPartyIdRemovalStatus::NoSupport,
43 })
44}