Merge pull request #32974 from nextcloud/backport/32016/stable24

[stable24] Use stored user for PasswordUpdatedEvent
This commit is contained in:
blizzz 2022-07-05 12:31:55 +02:00 committed by GitHub
commit 51afde11db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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;
}
if ($stored && $update) {
$credentials = [
'user' => $event->getLoginName(),
'password' => $event->getPassword()
];
$newCredentials = $storedCredentials;
$shouldUpdate = false;
$this->credentialsManager->store($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER, $credentials);
if (isset($storedCredentials['password']) && $storedCredentials['password'] !== $event->getPassword()) {
$shouldUpdate = true;
$newCredentials['password'] = $event->getPassword();
}
if (isset($storedCredentials['user']) && $event instanceof UserLoggedInEvent && $storedCredentials['user'] !== $event->getLoginName()) {
$shouldUpdate = true;
$newCredentials['user'] = $event->getLoginName();
}
if ($shouldUpdate) {
$this->credentialsManager->store($event->getUser()->getUID(), LoginCredentials::CREDENTIALS_IDENTIFIER, $newCredentials);
}
}
}