]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove 2FA backup codes on user deletion
authorJoas Schilling <coding@schilljs.com>
Mon, 15 May 2017 11:19:44 +0000 (13:19 +0200)
committerJoas Schilling <coding@schilljs.com>
Mon, 15 May 2017 11:31:30 +0000 (13:31 +0200)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/twofactor_backupcodes/appinfo/app.php
apps/twofactor_backupcodes/lib/AppInfo/Application.php [new file with mode: 0644]
apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php

index 0cb105313608fa0cf0d665b6ebd26c6c91f2c0be..34b4866af2dbca70d0bdcbe695f0016da60d3d14 100644 (file)
@@ -1,7 +1,8 @@
 <?php
-
 /**
- * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -20,6 +21,5 @@
  *
  */
 
-// @codeCoverageIgnoreStart
-OC_App::registerPersonal('twofactor_backupcodes', 'settings/personal');
-// @codeCoverageIgnoreEnd
+$app = new \OCA\TwoFactorBackupCodes\AppInfo\Application();
+$app->register();
diff --git a/apps/twofactor_backupcodes/lib/AppInfo/Application.php b/apps/twofactor_backupcodes/lib/AppInfo/Application.php
new file mode 100644 (file)
index 0000000..ad92c0b
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @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\AppInfo;
+
+use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
+use OCP\AppFramework\App;
+use OCP\Util;
+
+class Application extends App {
+       public function __construct () {
+               parent::__construct('twofactor_backupcodes');
+       }
+
+       /**
+        * Register the different app parts
+        */
+       public function register() {
+               $this->registerHooksAndEvents();
+               $this->registerPersonalPage();
+       }
+
+       /**
+        * Register the hooks and events
+        */
+       public function registerHooksAndEvents() {
+               Util::connectHook('OC_User', 'post_deleteUser', $this, 'deleteUser');
+       }
+
+       public function deleteUser($params) {
+               /** @var BackupCodeMapper $mapper */
+               $mapper = $this->getContainer()->query(BackupCodeMapper::class);
+               $mapper->deleteCodesByUserId($params['uid']);
+       }
+
+       /**
+        * Register personal settings for notifications and emails
+        */
+       public function registerPersonalPage() {
+               \OCP\App::registerPersonal($this->getContainer()->getAppName(), 'settings/personal');
+       }
+}
index 85cc174fb6a394da58901d07f40d503462dd3e50..ff993683c59f4ce455982c2df1f19c79a094cda6 100644 (file)
@@ -52,12 +52,22 @@ class BackupCodeMapper extends Mapper {
                }, $rows);
        }
 
+       /**
+        * @param IUser $user
+        */
        public function deleteCodes(IUser $user) {
+               $this->deleteCodesByUserId($user->getUID());
+       }
+
+       /**
+        * @param string $uid
+        */
+       public function deleteCodesByUserId($uid) {
                /* @var IQueryBuilder $qb */
                $qb = $this->db->getQueryBuilder();
 
                $qb->delete('twofactor_backup_codes')
-                       ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID())));
+                       ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($uid)));
                $qb->execute();
        }