Do not dispatch postSetPassword when setPassword fails

Also Improve error message when setPassword fails

Signed-off-by: Louis Chemineau <louis@chmn.me>
pull/32276/head
Louis Chemineau 4 years ago
parent d3efd40a24
commit 8a2cf5bb68
  1. 5
      apps/settings/lib/Controller/ChangePasswordController.php
  2. 16
      lib/private/User/User.php
  3. 6
      tests/Core/Controller/ChangePasswordControllerTest.php

@ -109,7 +109,10 @@ class ChangePasswordController extends Controller {
try {
if ($newpassword === null || $user->setPassword($newpassword) === false) {
return new JSONResponse([
'status' => 'error'
'status' => 'error',
'data' => [
'message' => $this->l->t('Unable to change personal password'),
],
]);
}
// password policy app throws exception

@ -320,13 +320,17 @@ class User implements IUser {
}
if ($this->backend->implementsActions(Backend::SET_PASSWORD)) {
$result = $this->backend->setPassword($this->uid, $password);
$this->legacyDispatcher->dispatch(IUser::class . '::postSetPassword', new GenericEvent($this, [
'password' => $password,
'recoveryPassword' => $recoveryPassword,
]));
if ($this->emitter) {
$this->emitter->emit('\OC\User', 'postSetPassword', [$this, $password, $recoveryPassword]);
if ($result !== false) {
$this->legacyDispatcher->dispatch(IUser::class . '::postSetPassword', new GenericEvent($this, [
'password' => $password,
'recoveryPassword' => $recoveryPassword,
]));
if ($this->emitter) {
$this->emitter->emit('\OC\User', 'postSetPassword', [$this, $password, $recoveryPassword]);
}
}
return !($result === false);
} else {
return false;

@ -138,6 +138,9 @@ class ChangePasswordControllerTest extends \Test\TestCase {
$expects = [
'status' => 'error',
'data' => [
'message' => 'Unable to change personal password',
],
];
$res = $this->controller->changePersonalPassword('old');
@ -163,6 +166,9 @@ class ChangePasswordControllerTest extends \Test\TestCase {
$expects = new JSONResponse([
'status' => 'error',
'data' => [
'message' => 'Unable to change personal password',
],
]);
$actual = $this->controller->changePersonalPassword('old', 'new');

Loading…
Cancel
Save