]> Untitled Git - lemmy.git/blob - crates/api_crud/src/user/delete.rs
5a8b4d03628176a4fb226685a8e52d26b70b1e80
[lemmy.git] / crates / api_crud / src / user / delete.rs
1 use crate::PerformCrud;
2 use actix_web::web::Data;
3 use bcrypt::verify;
4 use lemmy_api_common::{
5   context::LemmyContext,
6   person::{DeleteAccount, DeleteAccountResponse},
7   utils::local_user_view_from_jwt,
8 };
9 use lemmy_utils::error::{LemmyError, LemmyErrorType};
10
11 #[async_trait::async_trait(?Send)]
12 impl PerformCrud for DeleteAccount {
13   type Response = DeleteAccountResponse;
14
15   #[tracing::instrument(skip(self, context))]
16   async fn perform(&self, context: &Data<LemmyContext>) -> Result<Self::Response, LemmyError> {
17     let data = self;
18     let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), context).await?;
19
20     // Verify the password
21     let valid: bool = verify(
22       &data.password,
23       &local_user_view.local_user.password_encrypted,
24     )
25     .unwrap_or(false);
26     if !valid {
27       return Err(LemmyErrorType::IncorrectLogin)?;
28     }
29
30     Ok(DeleteAccountResponse {})
31   }
32 }