]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
setPassword now runs validate too
authorMikael Nordfeldth <mmn@hethane.se>
Wed, 30 Dec 2015 16:49:13 +0000 (17:49 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Wed, 30 Dec 2015 16:51:57 +0000 (17:51 +0100)
actions/passwordsettings.php
classes/User.php

index cfdb6c78176e221fcef24a1cd3e7d04feb48584b..da752cbb9174a2de439b7865cb926be7cc16834f 100644 (file)
@@ -144,22 +144,8 @@ class PasswordsettingsAction extends SettingsAction
 
         if (Event::handle('StartChangePassword', array($this->scoped, $oldpassword, $newpassword))) {
             //no handler changed the password, so change the password internally
-            $user = $this->scoped->getUser();
-            $original = clone($user);
+            $user->setPassword($newpassword);
 
-            $user->password = common_munge_password($newpassword, $this->scoped);
-
-            $val = $user->validate();
-            if ($val !== true) {
-                // TRANS: Form validation error on page where to change password.
-                throw new ServerException(_('Error saving user; invalid.'));
-            }
-
-            if (!$user->update($original)) {
-                // TRANS: Server error displayed on page where to change password when password change
-                // TRANS: could not be made because of a server error.
-                throw new ServerException(_('Cannot save new password.'));
-            }
             Event::handle('EndChangePassword', array($this->scoped));
         }
 
index cbe923fc0eddb711a9573e4565c5a904ce61b521..c8b334d489ab76c553f7a27e6601c1cb63c397d3 100644 (file)
@@ -1017,8 +1017,16 @@ class User extends Managed_DataObject
         $orig = clone($this);
         $this->password = common_munge_password($password, $this->getProfile());
 
+        if ($this->validate() !== true) {
+            // TRANS: Form validation error on page where to change password.
+            throw new ServerException(_('Error saving user; invalid.'));
+        }
+
         if (!$this->update($orig)) {
-            throw new ServerException("Error updating user '{$nickname}'.");
+            common_log_db_error($this, 'UPDATE', __FILE__);
+            // TRANS: Server error displayed on page where to change password when password change
+            // TRANS: could not be made because of a server error.
+            throw new ServerException(_('Cannot save new password.'));
         }
     }