summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2021-06-22 13:41:48 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2021-06-30 00:47:36 +0200
commitc7bf4295cc98328796029e106b5881adfd9b2113 (patch)
tree40cd1b91030ee77277d61f24c339490a6cc51c58
parentd64411e9df9f915a66c6efaee8c91edc10bc21e4 (diff)
downloadnextcloud-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.php34
-rw-r--r--tests/lib/Accounts/AccountManagerTest.php5
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 {