From 94dbc43d34b35bf46f16b9674b93d87d69b95a36 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim=20D=C3=BCsterhus?= Date: Mon, 16 Nov 2020 13:51:05 +0100 Subject: [PATCH] Use the placeholder as the default device name --- .../TotpMultifactorMethod.class.php | 22 +++++++++++++++++-- wcfsetup/install/lang/de.xml | 1 - wcfsetup/install/lang/en.xml | 1 - 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/wcfsetup/install/files/lib/system/user/multifactor/TotpMultifactorMethod.class.php b/wcfsetup/install/files/lib/system/user/multifactor/TotpMultifactorMethod.class.php index 5279a6d4f2..abf110540f 100644 --- a/wcfsetup/install/files/lib/system/user/multifactor/TotpMultifactorMethod.class.php +++ b/wcfsetup/install/files/lib/system/user/multifactor/TotpMultifactorMethod.class.php @@ -198,8 +198,26 @@ class TotpMultifactorMethod implements IMultifactorMethod { ]; } else { - $defaultName = WCF::getLanguage()->getDynamicVariable('wcf.user.security.multifactor.totp.deviceName.default'); - $deviceName = $formData['data']['deviceName'] ?: $defaultName; + $deviceName = $formData['data']['deviceName']; + if (!$deviceName) { + $defaultName = WCF::getLanguage()->getDynamicVariable('wcf.user.security.multifactor.totp.deviceName.placeholder'); + + $sql = "SELECT deviceName + FROM wcf".WCF_N."_user_multifactor_totp + WHERE setupID = ?"; + $statement = WCF::getDB()->prepareStatement($sql); + $statement->execute([ + $setup->getId(), + ]); + $deviceNames = $statement->fetchAll(\PDO::FETCH_COLUMN); + + for ($i = 1;; $i++) { + $deviceName = $defaultName.($i > 1 ? " ($i)" : ''); + if (!in_array($deviceName, $deviceNames)) { + break; + } + } + } $sql = "INSERT INTO wcf".WCF_N."_user_multifactor_totp (setupID, deviceID, deviceName, secret, minCounter, createTime) diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index 7d6f2c4521..574d1638a5 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -4856,7 +4856,6 @@ Die E-Mail-Adresse des neuen Benutzers lautet: {@$user->email} - diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index 934f3e999a..14a6e40df3 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -4853,7 +4853,6 @@ Open the link below to access the user profile: - -- 2.20.1