]> source.dussan.org Git - nextcloud-server.git/commitdiff
Change 2FA activities to more generic security activities
authorChristoph Wurst <christoph@winzerhof-wurst.at>
Tue, 16 May 2017 07:37:21 +0000 (09:37 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 18 May 2017 20:10:57 +0000 (22:10 +0200)
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
apps/twofactor_backupcodes/appinfo/info.xml
apps/twofactor_backupcodes/lib/Activity/GenericFilter.php [deleted file]
apps/twofactor_backupcodes/lib/Activity/GenericProvider.php [deleted file]
apps/twofactor_backupcodes/lib/Activity/GenericSetting.php [deleted file]
lib/private/Authentication/TwoFactorAuth/Manager.php
settings/Activity/SecurityFilter.php [new file with mode: 0644]
settings/Activity/SecurityProvider.php [new file with mode: 0644]
settings/Activity/SecuritySetting.php [new file with mode: 0644]
settings/Application.php

index e5e96eddcf903f0fae2fece618bc172224c53ab3..77ecbd8e1a2db479178ae1781fe01bdef0661649 100644 (file)
        </dependencies>
 
        <activity>
-               <filters>
-                       <filter>OCA\TwoFactorBackupCodes\Activity\GenericFilter</filter>
-               </filters>
-               <settings>
-                       <setting>OCA\TwoFactorBackupCodes\Activity\GenericSetting</setting>
-               </settings>
                <providers>
-                       <provider>OCA\TwoFactorBackupCodes\Activity\GenericProvider</provider>
                        <provider>OCA\TwoFactorBackupCodes\Activity\Provider</provider>
                </providers>
        </activity>
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericFilter.php b/apps/twofactor_backupcodes/lib/Activity/GenericFilter.php
deleted file mode 100644 (file)
index 27c0274..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/**
- * @author Christoph Wurst <christoph@winzerhof-wurst.at>
- *
- * @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/>.
- *
- */
-
-namespace OCA\TwoFactorBackupCodes\Activity;
-
-use OCP\Activity\IFilter;
-use OCP\IL10N;
-use OCP\IURLGenerator;
-
-class GenericFilter implements IFilter {
-
-       /** @var IURLGenerator */
-       private $urlGenerator;
-
-       /** @var IL10N */
-       private $l10n;
-
-       public function __construct(IURLGenerator $urlGenerator, IL10N $l10n) {
-               $this->urlGenerator = $urlGenerator;
-               $this->l10n = $l10n;
-       }
-
-       public function allowedApps() {
-               return [];
-       }
-
-       public function filterTypes(array $types) {
-               return array_intersect(['twofactor'], $types);
-       }
-
-       public function getIcon() {
-               return $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'));
-       }
-
-       public function getIdentifier() {
-               return 'twofactor';
-       }
-
-       public function getName() {
-               return $this->l10n->t('Two-factor authentication');
-       }
-
-       public function getPriority() {
-               return 30;
-       }
-
-}
diff --git a/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php b/apps/twofactor_backupcodes/lib/Activity/GenericProvider.php
deleted file mode 100644 (file)
index ffdd477..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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 GenericProvider 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->getType() !== 'twofactor') {
-                       throw new InvalidArgumentException();
-               }
-
-               $l = $this->l10n->get('core', $language);
-
-               switch ($event->getSubject()) {
-                       case 'twofactor_success':
-                               $params = $event->getSubjectParameters();
-                               $event->setParsedSubject($l->t('You successfully logged in using two-factor authentication (%1$s)', [
-                                                       $params['provider'],
-                                       ]));
-                               $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
-                               break;
-                       case 'twofactor_failed':
-                               $params = $event->getSubjectParameters();
-                               $event->setParsedSubject($l->t('A login attempt using two-factor authentication failed (%1$s)', [
-                                                       $params['provider'],
-                                       ]));
-                               $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/Activity/GenericSetting.php b/apps/twofactor_backupcodes/lib/Activity/GenericSetting.php
deleted file mode 100644 (file)
index abd1c60..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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 OCP\Activity\ISetting;
-use OCP\IL10N;
-
-class GenericSetting implements ISetting {
-
-       /** @var IL10N */
-       private $l10n;
-
-       public function __construct(IL10N $l10n) {
-               $this->l10n = $l10n;
-       }
-
-       public function canChangeMail() {
-               return false;
-       }
-
-       public function canChangeStream() {
-               return false;
-       }
-
-       public function getIdentifier() {
-               return 'twofactor';
-       }
-
-       public function getName() {
-               return $this->l10n->t('Two-factor authentication');
-       }
-
-       public function getPriority() {
-               return 30;
-       }
-
-       public function isDefaultEnabledMail() {
-               return true;
-       }
-
-       public function isDefaultEnabledStream() {
-               return true;
-       }
-
-}
index 1d0deada69657c3b9ceef349213b8e2bb9dffa85..06aa0224ae0320d50d068528bab997996fc2d03b 100644 (file)
@@ -23,6 +23,7 @@
 
 namespace OC\Authentication\TwoFactorAuth;
 
+use BadMethodCallException;
 use Exception;
 use OC;
 use OC\App\AppManager;
@@ -218,16 +219,16 @@ class Manager {
         */
        private function publishEvent(IUser $user, $event, array $params) {
                $activity = $this->activityManager->generateEvent();
-               $activity->setApp('twofactor_generic')
-                       ->setType('twofactor')
+               $activity->setApp('core')
+                       ->setType('security')
                        ->setAuthor($user->getUID())
                        ->setAffectedUser($user->getUID())
                        ->setSubject($event, $params);
                try {
                        $this->activityManager->publish($activity);
-               } catch (Exception $e) {
-                       $this->logger->warning('could not publish backup code creation activity', ['app' => 'twofactor_backupcodes']);
-                       $this->logger->logException($e, ['app' => 'twofactor_backupcodes']);
+               } catch (BadMethodCallException $e) {
+                       $this->logger->warning('could not publish backup code creation activity', ['app' => 'core']);
+                       $this->logger->logException($e, ['app' => 'core']);
                }
        }
 
diff --git a/settings/Activity/SecurityFilter.php b/settings/Activity/SecurityFilter.php
new file mode 100644 (file)
index 0000000..6bf36a9
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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/>.
+ *
+ */
+
+namespace OC\Settings\Activity;
+
+use OCP\Activity\IFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class SecurityFilter implements IFilter {
+
+       /** @var IURLGenerator */
+       private $urlGenerator;
+
+       /** @var IL10N */
+       private $l10n;
+
+       public function __construct(IURLGenerator $urlGenerator, IL10N $l10n) {
+               $this->urlGenerator = $urlGenerator;
+               $this->l10n = $l10n;
+       }
+
+       public function allowedApps() {
+               return [];
+       }
+
+       public function filterTypes(array $types) {
+               return array_intersect(['security'], $types);
+       }
+
+       public function getIcon() {
+               return $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'));
+       }
+
+       public function getIdentifier() {
+               return 'security';
+       }
+
+       public function getName() {
+               return $this->l10n->t('Security');
+       }
+
+       public function getPriority() {
+               return 30;
+       }
+
+}
diff --git a/settings/Activity/SecurityProvider.php b/settings/Activity/SecurityProvider.php
new file mode 100644 (file)
index 0000000..74747f6
--- /dev/null
@@ -0,0 +1,77 @@
+<?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 OC\Settings\Activity;
+
+use InvalidArgumentException;
+use OCP\Activity\IEvent;
+use OCP\Activity\IProvider;
+use OCP\ILogger;
+use OCP\IURLGenerator;
+use OCP\L10N\IFactory as L10nFactory;
+
+class SecurityProvider 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->getType() !== 'security') {
+                       throw new InvalidArgumentException();
+               }
+
+               $l = $this->l10n->get('core', $language);
+
+               switch ($event->getSubject()) {
+                       case 'twofactor_success':
+                               $params = $event->getSubjectParameters();
+                               $event->setParsedSubject($l->t('You successfully logged in using two-factor authentication (%1$s)', [
+                                                       $params['provider'],
+                                       ]));
+                               $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
+                               break;
+                       case 'twofactor_failed':
+                               $params = $event->getSubjectParameters();
+                               $event->setParsedSubject($l->t('A login attempt using two-factor authentication failed (%1$s)', [
+                                                       $params['provider'],
+                                       ]));
+                               $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')));
+                               break;
+                       default:
+                               throw new InvalidArgumentException();
+               }
+               return $event;
+       }
+
+}
diff --git a/settings/Activity/SecuritySetting.php b/settings/Activity/SecuritySetting.php
new file mode 100644 (file)
index 0000000..fe1b0dd
--- /dev/null
@@ -0,0 +1,65 @@
+<?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 OC\Settings\Activity;
+
+use OCP\Activity\ISetting;
+use OCP\IL10N;
+
+class SecuritySetting implements ISetting {
+
+       /** @var IL10N */
+       private $l10n;
+
+       public function __construct(IL10N $l10n) {
+               $this->l10n = $l10n;
+       }
+
+       public function canChangeMail() {
+               return false;
+       }
+
+       public function canChangeStream() {
+               return false;
+       }
+
+       public function getIdentifier() {
+               return 'security';
+       }
+
+       public function getName() {
+               return $this->l10n->t('Security');
+       }
+
+       public function getPriority() {
+               return 30;
+       }
+
+       public function isDefaultEnabledMail() {
+               return true;
+       }
+
+       public function isDefaultEnabledStream() {
+               return true;
+       }
+
+}
index 0ca2d28dfe6a29431f950eced1ae9d389cfe6114..f79453e3d017d1acf1460367abcd72304309a749 100644 (file)
@@ -34,6 +34,9 @@ use OC\AppFramework\Utility\TimeFactory;
 use OC\Authentication\Token\IProvider;
 use OC\Server;
 use OC\Settings\Activity\Provider;
+use OC\Settings\Activity\SecurityFilter;
+use OC\Settings\Activity\SecurityProvider;
+use OC\Settings\Activity\SecuritySetting;
 use OC\Settings\Activity\Setting;
 use OC\Settings\Mailer\NewUserMailHelper;
 use OC\Settings\Middleware\SubadminMiddleware;
@@ -114,6 +117,9 @@ class Application extends App {
                $activityManager = $this->getContainer()->getServer()->getActivityManager();
                $activityManager->registerSetting(Setting::class); // FIXME move to info.xml
                $activityManager->registerProvider(Provider::class); // FIXME move to info.xml
+               $activityManager->registerFilter(SecurityFilter::class); // FIXME move to info.xml
+               $activityManager->registerSetting(SecuritySetting::class); // FIXME move to info.xml
+               $activityManager->registerProvider(SecurityProvider::class); // FIXME move to info.xml
 
                Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword');
                Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo');