]> Untitled Git - lemmy.git/blobdiff - crates/api/src/local_user/change_password.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / api / src / local_user / change_password.rs
index e4e9004ea0b618f58cb200cf6c30fe721f3d681c..ea6f9b3e6b29f8d622a3b29b50d1f19943f4d3ba 100644 (file)
@@ -2,32 +2,30 @@ use crate::Perform;
 use actix_web::web::Data;
 use bcrypt::verify;
 use lemmy_api_common::{
+  context::LemmyContext,
   person::{ChangePassword, LoginResponse},
-  utils::{get_local_user_view_from_jwt, password_length_check},
-  LemmyContext,
+  utils::{local_user_view_from_jwt, password_length_check},
 };
 use lemmy_db_schema::source::local_user::LocalUser;
-use lemmy_utils::{claims::Claims, error::LemmyError, ConnectionId};
+use lemmy_utils::{
+  claims::Claims,
+  error::{LemmyError, LemmyErrorType},
+};
 
 #[async_trait::async_trait(?Send)]
 impl Perform for ChangePassword {
   type Response = LoginResponse;
 
-  #[tracing::instrument(skip(self, context, _websocket_id))]
-  async fn perform(
-    &self,
-    context: &Data<LemmyContext>,
-    _websocket_id: Option<ConnectionId>,
-  ) -> Result<LoginResponse, LemmyError> {
+  #[tracing::instrument(skip(self, context))]
+  async fn perform(&self, context: &Data<LemmyContext>) -> Result<LoginResponse, LemmyError> {
     let data: &ChangePassword = self;
-    let local_user_view =
-      get_local_user_view_from_jwt(data.auth.as_ref(), context.pool(), context.secret()).await?;
+    let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), context).await?;
 
     password_length_check(&data.new_password)?;
 
     // Make sure passwords match
     if data.new_password != data.new_password_verify {
-      return Err(LemmyError::from_message("passwords_dont_match"));
+      return Err(LemmyErrorType::PasswordsDoNotMatch)?;
     }
 
     // Check the old password
@@ -37,13 +35,13 @@ impl Perform for ChangePassword {
     )
     .unwrap_or(false);
     if !valid {
-      return Err(LemmyError::from_message("password_incorrect"));
+      return Err(LemmyErrorType::IncorrectLogin)?;
     }
 
     let local_user_id = local_user_view.local_user.id;
     let new_password = data.new_password.clone();
     let updated_local_user =
-      LocalUser::update_password(context.pool(), local_user_id, &new_password).await?;
+      LocalUser::update_password(&mut context.pool(), local_user_id, &new_password).await?;
 
     // Return the jwt
     Ok(LoginResponse {