diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2018-08-18 16:51:59 +0200 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2018-08-19 16:32:46 +0200 |
commit | 031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6 (patch) | |
tree | 1e6b38849ce63611557037d2d804f6a22c722fc4 /core/Controller | |
parent | 4b71df7b15e50815e060da73bb73b7d54dc06333 (diff) | |
download | nextcloud-server-031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6.tar.gz nextcloud-server-031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6.zip |
Enable password reset for user with same email address when only one is active
When two or more user share the same email address its not possible to
reset password by email. Even when only one account is active.
This pr reduce list of users returned by getByEmail by disabled users.
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'core/Controller')
-rw-r--r-- | core/Controller/LostController.php | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index eacd5847c6c..d663559dc62 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -364,24 +364,27 @@ class LostController extends Controller { * @throws \InvalidArgumentException */ protected function findUserByIdOrMail($input) { + $userNotFound = new \InvalidArgumentException( + $this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.') + ); + $user = $this->userManager->get($input); if ($user instanceof IUser) { if (!$user->isEnabled()) { - throw new \InvalidArgumentException($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); + throw $userNotFound; } return $user; } - $users = $this->userManager->getByEmail($input); - if (count($users) === 1) { - $user = $users[0]; - if (!$user->isEnabled()) { - throw new \InvalidArgumentException($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); - } - return $user; + $users = \array_filter($this->userManager->getByEmail($input), function (IUser $user) { + return $user->isEnabled(); + }); + + if (\count($users) === 1) { + return $users[0]; } - throw new \InvalidArgumentException($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); + throw $userNotFound; } } |