Do not dispatch postSetPassword when setPassword fails

Also Improve error message when setPassword fails

Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
Louis Chemineau 2022-05-05 11:21:20 +02:00
parent d3efd40a24
commit 8a2cf5bb68
3 changed files with 20 additions and 7 deletions

View file

@ -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

View file

@ -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;

View file

@ -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');