diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2022-07-05 12:31:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-05 12:31:26 +0200 |
commit | 08826427aeb3b3c85fd8e4ec082e5f5941c4755e (patch) | |
tree | b588383029d923623224ecf6f545b29118cea30c | |
parent | ad8acda2a2f456a7d37d11740b59561bb381894c (diff) | |
parent | 48477ba33a20ccf7d2804b6467cbbec091a85316 (diff) | |
download | nextcloud-server-08826427aeb3b3c85fd8e4ec082e5f5941c4755e.tar.gz nextcloud-server-08826427aeb3b3c85fd8e4ec082e5f5941c4755e.zip |
Merge pull request #32975 from nextcloud/backport/32016/stable23
[stable23] Use stored user for PasswordUpdatedEvent
-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); } } } |