1 use activitypub_federation::config::Data;
2 use actix_web::web::Json;
4 use lemmy_api_common::{
6 person::{DeleteAccount, DeleteAccountResponse},
7 send_activity::{ActivityChannel, SendActivityData},
8 utils::local_user_view_from_jwt,
10 use lemmy_utils::error::{LemmyError, LemmyErrorType};
12 #[tracing::instrument(skip(context))]
13 pub async fn delete_account(
14 data: Json<DeleteAccount>,
15 context: Data<LemmyContext>,
16 ) -> Result<Json<DeleteAccountResponse>, LemmyError> {
17 let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), &context).await?;
19 // Verify the password
20 let valid: bool = verify(
22 &local_user_view.local_user.password_encrypted,
26 return Err(LemmyErrorType::IncorrectLogin)?;
29 ActivityChannel::submit_activity(
30 SendActivityData::DeleteUser(local_user_view.person),
35 Ok(Json(DeleteAccountResponse {}))