diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2021-06-22 13:41:48 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2021-06-30 00:47:36 +0200 |
commit | c7bf4295cc98328796029e106b5881adfd9b2113 (patch) | |
tree | 40cd1b91030ee77277d61f24c339490a6cc51c58 | |
parent | d64411e9df9f915a66c6efaee8c91edc10bc21e4 (diff) | |
download | nextcloud-server-c7bf4295cc98328796029e106b5881adfd9b2113.tar.gz nextcloud-server-c7bf4295cc98328796029e106b5881adfd9b2113.zip |
adjust email verification checker
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
-rw-r--r-- | lib/private/Accounts/AccountManager.php | 34 | ||||
-rw-r--r-- | 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 { |