diff --git a/actions/passwordsettings.php b/actions/passwordsettings.php index cfdb6c7817..da752cbb91 100644 --- a/actions/passwordsettings.php +++ b/actions/passwordsettings.php @@ -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)); } diff --git a/classes/User.php b/classes/User.php index cbe923fc0e..c8b334d489 100644 --- a/classes/User.php +++ b/classes/User.php @@ -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.')); } }