From c7bf4295cc98328796029e106b5881adfd9b2113 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 22 Jun 2021 13:41:48 +0200 Subject: [PATCH] adjust email verification checker Signed-off-by: Arthur Schiwon --- lib/private/Accounts/AccountManager.php | 34 ++++++++++++----------- tests/lib/Accounts/AccountManagerTest.php | 5 +--- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php index 20f596e3a90..651663a57cc 100644 --- a/lib/private/Accounts/AccountManager.php +++ b/lib/private/Accounts/AccountManager.php @@ -228,7 +228,7 @@ class AccountManager implements IAccountManager { $updated = true; if ($userData !== $data) { - $data = $this->checkEmailVerification($userData, $data, $user); + $this->updateExistingUser($user, $data); } else { // nothing needs to be done if new and old data set are the same @@ -340,30 +340,31 @@ class AccountManager implements IAccountManager { /** * check if we need to ask the server for email verification, if yes we create a cronjob - * - * @param $oldData - * @param $newData - * @param IUser $user - * @return array - */ - protected function checkEmailVerification($oldData, $newData, IUser $user): array { - if ($oldData[self::PROPERTY_EMAIL]['value'] !== $newData[self::PROPERTY_EMAIL]['value']) { + */ + protected function checkEmailVerification(IAccount $updatedAccount, array $oldData): void { + try { + $property = $updatedAccount->getProperty(self::PROPERTY_EMAIL); + } catch (PropertyDoesNotExistException $e) { + return; + } + if ($oldData[self::PROPERTY_EMAIL]['value'] !== $property->getValue()) { $this->jobList->add(VerifyUserData::class, [ 'verificationCode' => '', - 'data' => $newData[self::PROPERTY_EMAIL]['value'], + 'data' => $property->getValue(), 'type' => self::PROPERTY_EMAIL, - 'uid' => $user->getUID(), + 'uid' => $updatedAccount->getUser()->getUID(), 'try' => 0, 'lastRun' => time() ] ); - $newData[self::PROPERTY_EMAIL]['verified'] = self::VERIFICATION_IN_PROGRESS; - } - return $newData; + + + $property->setVerified(self::VERIFICATION_IN_PROGRESS); + } } /** @@ -639,8 +640,9 @@ class AccountManager implements IAccountManager { $this->testPropertyScope($property, $allowedScopes, true); } - $this->updateVerificationStatus($account, $this->getUser($account->getUser(), false)); - + $oldData = $this->getUser($account->getUser(), false); + $this->updateVerificationStatus($account, $oldData); + $this->checkEmailVerification($account, $oldData); $this->updateUser($account->getUser(), $data, true); } diff --git a/tests/lib/Accounts/AccountManagerTest.php b/tests/lib/Accounts/AccountManagerTest.php index d70d453c248..3448c471cd7 100644 --- a/tests/lib/Accounts/AccountManagerTest.php +++ b/tests/lib/Accounts/AccountManagerTest.php @@ -278,7 +278,7 @@ class AccountManagerTest extends TestCase { * @param bool $updateExisting */ public function testUpdateUser($newData, $oldData, $insertNew, $updateExisting) { - $accountManager = $this->getInstance(['getUser', 'insertNewUser', 'updateExistingUser', 'checkEmailVerification']); + $accountManager = $this->getInstance(['getUser', 'insertNewUser', 'updateExistingUser']); /** @var IUser $user */ $user = $this->createMock(IUser::class); @@ -286,8 +286,6 @@ class AccountManagerTest extends TestCase { $accountManager->expects($this->once())->method('getUser')->with($user)->willReturn($oldData); if ($updateExisting) { - $accountManager->expects($this->once())->method('checkEmailVerification') - ->with($oldData, $newData, $user)->willReturn($newData); $accountManager->expects($this->once())->method('updateExistingUser') ->with($user, $newData); $accountManager->expects($this->never())->method('insertNewUser'); @@ -300,7 +298,6 @@ class AccountManagerTest extends TestCase { if (!$insertNew && !$updateExisting) { $accountManager->expects($this->never())->method('updateExistingUser'); - $accountManager->expects($this->never())->method('checkEmailVerification'); $accountManager->expects($this->never())->method('insertNewUser'); $this->eventDispatcher->expects($this->never())->method('dispatch'); } else { -- 2.39.5