Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Chemineau <louis@chmn.me>2022-05-05 12:21:20 +0300
committerLouis Chemineau <louis@chmn.me>2022-05-05 18:21:23 +0300
commit8a2cf5bb68617004d24469c65b68e8b01ca56621 (patch)
tree58cb1836b328b159be549f5759245db9fbf1f6d5
parentd3efd40a24be45a2a38a904c111d10fa4de01f81 (diff)
Do not dispatch postSetPassword when setPassword fails
Also Improve error message when setPassword fails Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r--apps/settings/lib/Controller/ChangePasswordController.php5
-rw-r--r--lib/private/User/User.php16
-rw-r--r--tests/Core/Controller/ChangePasswordControllerTest.php6
3 files changed, 20 insertions, 7 deletions
diff --git a/apps/settings/lib/Controller/ChangePasswordController.php b/apps/settings/lib/Controller/ChangePasswordController.php
index 8dd1e6ba028..85e4218ebb5 100644
--- a/apps/settings/lib/Controller/ChangePasswordController.php
+++ b/apps/settings/lib/Controller/ChangePasswordController.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
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 0a51622428b..e7aa72fafba 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -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;
diff --git a/tests/Core/Controller/ChangePasswordControllerTest.php b/tests/Core/Controller/ChangePasswordControllerTest.php
index 190afd3be47..2d7292f6801 100644
--- a/tests/Core/Controller/ChangePasswordControllerTest.php
+++ b/tests/Core/Controller/ChangePasswordControllerTest.php
@@ -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');