diff options
Diffstat (limited to 'apps/twofactor_backupcodes/lib/BackgroundJob')
-rw-r--r-- | apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php | 48 | ||||
-rw-r--r-- | apps/twofactor_backupcodes/lib/BackgroundJob/RememberBackupCodesJob.php | 63 |
2 files changed, 33 insertions, 78 deletions
diff --git a/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php b/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php index b1be4927083..bc26cb260f4 100644 --- a/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php +++ b/apps/twofactor_backupcodes/lib/BackgroundJob/CheckBackupCodes.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\TwoFactorBackupCodes\BackgroundJob; @@ -36,28 +18,26 @@ use OCP\IUserManager; class CheckBackupCodes extends QueuedJob { - /** @var IUserManager */ - private $userManager; - - /** @var IJobList */ - private $jobList; - - /** @var IRegistry */ - private $registry; - /** @var Manager */ private $twofactorManager; - public function __construct(ITimeFactory $timeFactory, IUserManager $userManager, IJobList $jobList, Manager $twofactorManager, IRegistry $registry) { + public function __construct( + ITimeFactory $timeFactory, + private IUserManager $userManager, + private IJobList $jobList, + Manager $twofactorManager, + private IRegistry $registry, + ) { parent::__construct($timeFactory); - $this->userManager = $userManager; - $this->jobList = $jobList; $this->twofactorManager = $twofactorManager; - $this->registry = $registry; } protected function run($argument) { - $this->userManager->callForSeenUsers(function (IUser $user) { + $this->userManager->callForSeenUsers(function (IUser $user): void { + if (!$user->isEnabled()) { + return; + } + $providers = $this->registry->getProviderStates($user); $isTwoFactorAuthenticated = $this->twofactorManager->isTwoFactorAuthenticated($user); diff --git a/apps/twofactor_backupcodes/lib/BackgroundJob/RememberBackupCodesJob.php b/apps/twofactor_backupcodes/lib/BackgroundJob/RememberBackupCodesJob.php index 3eed1bb8dea..5e853479f0a 100644 --- a/apps/twofactor_backupcodes/lib/BackgroundJob/RememberBackupCodesJob.php +++ b/apps/twofactor_backupcodes/lib/BackgroundJob/RememberBackupCodesJob.php @@ -3,32 +3,13 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\TwoFactorBackupCodes\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Authentication\TwoFactorAuth\IRegistry; -use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\IJobList; use OCP\BackgroundJob\TimedJob; use OCP\IUserManager; @@ -36,32 +17,18 @@ use OCP\Notification\IManager; class RememberBackupCodesJob extends TimedJob { - /** @var IRegistry */ - private $registry; - - /** @var IUserManager */ - private $userManager; - - /** @var IManager */ - private $notificationManager; - - /** @var IJobList */ - private $jobList; - - public function __construct(IRegistry $registry, - IUserManager $userManager, - ITimeFactory $timeFactory, - IManager $notificationManager, - IJobList $jobList) { + public function __construct( + private IRegistry $registry, + private IUserManager $userManager, + ITimeFactory $timeFactory, + private IManager $notificationManager, + private IJobList $jobList, + ) { parent::__construct($timeFactory); - $this->registry = $registry; - $this->userManager = $userManager; $this->time = $timeFactory; - $this->notificationManager = $notificationManager; - $this->jobList = $jobList; $this->setInterval(60 * 60 * 24 * 14); - $this->setTimeSensitivity(IJob::TIME_INSENSITIVE); + $this->setTimeSensitivity(self::TIME_INSENSITIVE); } protected function run($argument) { @@ -70,6 +37,7 @@ class RememberBackupCodesJob extends TimedJob { if ($user === null) { // We can't run with an invalid user + $this->jobList->remove(self::class, $argument); return; } @@ -94,9 +62,16 @@ class RememberBackupCodesJob extends TimedJob { $notification = $this->notificationManager->createNotification(); $notification->setApp('twofactor_backupcodes') ->setUser($user->getUID()) - ->setDateTime($date) ->setObject('create', 'codes') ->setSubject('create_backupcodes'); + $this->notificationManager->markProcessed($notification); + + if (!$user->isEnabled()) { + // Don't recreate a notification for a user that can not read it + $this->jobList->remove(self::class, $argument); + return; + } + $notification->setDateTime($date); $this->notificationManager->notify($notification); } } |