diff options
author | Louis Chemineau <louis@chmn.me> | 2022-04-19 15:56:56 +0200 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2022-05-10 12:16:33 +0200 |
commit | 816e7827f0d60e78f112ff9a3c6dfc90facc638b (patch) | |
tree | 11c5433113ea26d261345e91aa88ecb138bd975f | |
parent | 290697b08f3ca4faa34b631cf70ea521cf52142f (diff) | |
download | nextcloud-server-816e7827f0d60e78f112ff9a3c6dfc90facc638b.tar.gz nextcloud-server-816e7827f0d60e78f112ff9a3c6dfc90facc638b.zip |
Use stored user for PasswordUpdatedEvent
When handling PasswordUpdatedEvent event, we are calling getLoginName which does not exists.
This PR adds a condition to use the previously stored user when handling PasswordUpdatedEvent.
Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r-- | apps/files_external/lib/Listener/StorePasswordListener.php | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/apps/files_external/lib/Listener/StorePasswordListener.php b/apps/files_external/lib/Listener/StorePasswordListener.php index bd0c4dc1ffd..66232a78a93 100644 --- a/apps/files_external/lib/Listener/StorePasswordListener.php +++ b/apps/files_external/lib/Listener/StorePasswordListener.php @@ -50,19 +50,27 @@ class StorePasswordListener implements IEventListener { return; } - $stored = $this->credentialsManager->retrieve($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER); - $update = isset($stored['password']) && $stored['password'] !== $event->getPassword(); - if (!$update && $event instanceof UserLoggedInEvent) { - $update = isset($stored['user']) && $stored['user'] !== $event->getLoginName(); + $storedCredentials = $this->credentialsManager->retrieve($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER); + + if (!$storedCredentials) { + return; + } + + $newCredentials = $storedCredentials; + $shouldUpdate = false; + + if (isset($storedCredentials['password']) && $storedCredentials['password'] !== $event->getPassword()) { + $shouldUpdate = true; + $newCredentials['password'] = $event->getPassword(); } - if ($stored && $update) { - $credentials = [ - 'user' => $event->getLoginName(), - 'password' => $event->getPassword() - ]; + if (isset($storedCredentials['user']) && $event instanceof UserLoggedInEvent && $storedCredentials['user'] !== $event->getLoginName()) { + $shouldUpdate = true; + $newCredentials['user'] = $event->getLoginName(); + } - $this->credentialsManager->store($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER, $credentials); + if ($shouldUpdate) { + $this->credentialsManager->store($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER, $newCredentials); } } } |