]> Untitled Git - lemmy.git/blob - crates/api_crud/src/user/delete.rs
Merge pull request #2593 from LemmyNet/refactor-notifications
[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::get_local_user_view_from_jwt,
8 };
9 use lemmy_utils::{error::LemmyError, ConnectionId};
10
11 #[async_trait::async_trait(?Send)]
12 impl PerformCrud for DeleteAccount {
13   type Response = DeleteAccountResponse;
14
15   #[tracing::instrument(skip(self, context, _websocket_id))]
16   async fn perform(
17     &self,
18     context: &Data<LemmyContext>,
19     _websocket_id: Option<ConnectionId>,
20   ) -> Result<Self::Response, LemmyError> {
21     let data = self;
22     let local_user_view =
23       get_local_user_view_from_jwt(data.auth.as_ref(), context.pool(), context.secret()).await?;
24
25     // Verify the password
26     let valid: bool = verify(
27       &data.password,
28       &local_user_view.local_user.password_encrypted,
29     )
30     .unwrap_or(false);
31     if !valid {
32       return Err(LemmyError::from_message("password_incorrect"));
33     }
34
35     Ok(DeleteAccountResponse {})
36   }
37 }