Add com.woltlab.wcf.multifactor.backup object type
authorTim Düsterhus <duesterhus@woltlab.com>
Mon, 2 Nov 2020 14:11:41 +0000 (15:11 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 16 Nov 2020 16:25:03 +0000 (17:25 +0100)
com.woltlab.wcf/objectType.xml
wcfsetup/install/files/lib/system/user/multifactor/BackupMultifactorMethod.class.php [new file with mode: 0644]

index 334c8d3e92a93f7f162384d6cd0626b08efd929c..3108650d25514f6dd18ff43e23564779f972a1d7 100644 (file)
                        <definitionname>com.woltlab.wcf.floodControl</definitionname>
                </type>
                <!-- multi factor -->
+               <type>
+                       <name>com.woltlab.wcf.multifactor.backup</name>
+                       <definitionname>com.woltlab.wcf.multifactor</definitionname>
+                       <icon>sticky-note</icon>
+                       <classname>wcf\system\user\multifactor\BackupMultifactorMethod</classname>
+               </type>
                <type>
                        <name>com.woltlab.wcf.multifactor.totp</name>
                        <definitionname>com.woltlab.wcf.multifactor</definitionname>
diff --git a/wcfsetup/install/files/lib/system/user/multifactor/BackupMultifactorMethod.class.php b/wcfsetup/install/files/lib/system/user/multifactor/BackupMultifactorMethod.class.php
new file mode 100644 (file)
index 0000000..ad4f32f
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+namespace wcf\system\user\multifactor;
+use wcf\data\user\User;
+
+/**
+ * Implementation of random backup codes.
+ *
+ * @author     Tim Duesterhus
+ * @copyright  2001-2020 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    WoltLabSuite\System\User\Multifactor
+ * @since      5.4
+ */
+class BackupMultifactorMethod implements IMultifactorMethod {
+       /**
+        * Returns the number of remaining codes.
+        */
+       public function getStatusText(User $user): string {
+               // TODO: Return a proper text.
+               return random_int(10000, 99999)." codes remaining";
+       }
+}