diff options
Diffstat (limited to 'apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php')
-rw-r--r-- | apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php b/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php new file mode 100644 index 00000000000..bc26cb260f4 --- /dev/null +++ b/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\TwoFactorBackupCodes\BackgroundJob; + +use OC\Authentication\TwoFactorAuth\Manager; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Authentication\TwoFactorAuth\IRegistry; +use OCP\BackgroundJob\IJobList; +use OCP\BackgroundJob\QueuedJob; +use OCP\IUser; +use OCP\IUserManager; + +class CheckBackupCodes extends QueuedJob { + + /** @var Manager */ + private $twofactorManager; + + public function __construct( + ITimeFactory $timeFactory, + private IUserManager $userManager, + private IJobList $jobList, + Manager $twofactorManager, + private IRegistry $registry, + ) { + parent::__construct($timeFactory); + $this->twofactorManager = $twofactorManager; + } + + protected function run($argument) { + $this->userManager->callForSeenUsers(function (IUser $user): void { + if (!$user->isEnabled()) { + return; + } + + $providers = $this->registry->getProviderStates($user); + $isTwoFactorAuthenticated = $this->twofactorManager->isTwoFactorAuthenticated($user); + + if ($isTwoFactorAuthenticated && isset($providers['backup_codes']) && $providers['backup_codes'] === false) { + $this->jobList->add(RememberBackupCodesJob::class, ['uid' => $user->getUID()]); + } + }); + } +} |