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 services
35 .admin
36 .notify(&format!("User {sender_user} deactivated their account."))
37 .await;
38
39 Ok(deactivate::v3::Response {
40 id_server_unbind_result: ThirdPartyIdRemovalStatus::NoSupport,
41 })
42}