diff options
Diffstat (limited to 'apps/twofactor_backupcodes/lib')
3 files changed, 91 insertions, 2 deletions
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php b/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php index e7eebb12838..70942cf72bd 100644 --- a/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php +++ b/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php @@ -56,7 +56,6 @@ class GenericProvider implements IProvider { switch ($event->getSubject()) { case 'twofactor_success': $params = $event->getSubjectParameters(); - error_log(json_encode($params['provider'])); $event->setParsedSubject($l->t('You successfully logged in using two-factor authentication (%1$s)', [ $params['provider'], ])); diff --git a/apps/twofactor_backupcodes/lib/Activity/Provider.php b/apps/twofactor_backupcodes/lib/Activity/Provider.php new file mode 100644 index 00000000000..db139a0e674 --- /dev/null +++ b/apps/twofactor_backupcodes/lib/Activity/Provider.php @@ -0,0 +1,67 @@ +<?php + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * Two-factor backup codes + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\TwoFactorBackupCodes\Activity; + +use InvalidArgumentException; +use OCP\Activity\IEvent; +use OCP\Activity\IProvider; +use OCP\ILogger; +use OCP\IURLGenerator; +use OCP\L10N\IFactory as L10nFactory; + +class Provider implements IProvider { + + /** @var L10nFactory */ + private $l10n; + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var ILogger */ + private $logger; + + public function __construct(L10nFactory $l10n, IURLGenerator $urlGenerator, ILogger $logger) { + $this->logger = $logger; + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; + } + + public function parse($language, IEvent $event, IEvent $previousEvent = null) { + if ($event->getApp() !== 'twofactor_backupcodes') { + throw new InvalidArgumentException(); + } + + $l = $this->l10n->get('twofactor_backupcodes', $language); + + switch ($event->getSubject()) { + case 'codes_generated': + $event->setParsedSubject($l->t('You created backup codes for your account')); + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'))); + break; + default: + throw new InvalidArgumentException(); + } + return $event; + } + +} diff --git a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php index bb10081bb54..d7bcfe01475 100644 --- a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php +++ b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php @@ -24,6 +24,7 @@ namespace OCA\TwoFactorBackupCodes\Service; use OCA\TwoFactorBackupCodes\Db\BackupCode; use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper; +use OCP\Activity\IManager; use OCP\IUser; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; @@ -39,10 +40,14 @@ class BackupCodeStorage { /** @var ISecureRandom */ private $random; - public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher) { + /** @var IManager */ + private $activityManager; + + public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher, IManager $activityManager) { $this->mapper = $mapper; $this->hasher = $hasher; $this->random = $random; + $this->activityManager = $activityManager; } /** @@ -68,10 +73,28 @@ class BackupCodeStorage { array_push($result, $code); } + $this->publishEvent($user, 'codes_generated'); + return $result; } /** + * Push an event the user's activity stream + * + * @param IUser $user + * @param string $event + */ + private function publishEvent(IUser $user, $event) { + $activity = $this->activityManager->generateEvent(); + $activity->setApp('twofactor_backupcodes') + ->setType('twofactor') + ->setAuthor($user->getUID()) + ->setAffectedUser($user->getUID()); + $activity->setSubject($event); + $this->activityManager->publish($activity); + } + + /** * @param IUser $user * @return bool */ |