Use more user-friendly error message for MFA w/o setups
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 3 Dec 2020 08:56:15 +0000 (09:56 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 3 Dec 2020 08:56:15 +0000 (09:56 +0100)
This still MUST NOT ever happen, but in case it does the error message is more
useful and it was easy enough to implement.

wcfsetup/install/files/lib/form/MultifactorAuthenticationForm.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 0954afec8a7b64fe4514e4c9876c76280739be61..c6ec9a93e43385f59e5622d144f03edb3cb4b9aa 100644 (file)
@@ -86,7 +86,12 @@ class MultifactorAuthenticationForm extends AbstractFormBuilderForm {
                $this->setups = Setup::getAllForUser($this->user);
                
                if (empty($this->setups)) {
-                       throw new \LogicException('Unreachable');
+                       throw new NamedUserException(WCF::getLanguage()->getDynamicVariable(
+                               'wcf.user.security.multifactor.authentication.noSetup',
+                               [
+                                       'user' => $this->user,
+                               ]
+                       ));
                }
                
                \uasort($this->setups, function (Setup $a, Setup $b) {
index 914150327ee8a6f44ec9f18e4c9af6c00fabff08..864ce3379dac4af4f62972f3cae636234d2017e6 100644 (file)
@@ -4946,6 +4946,7 @@ Die E-Mail-Adresse des neuen Benutzers lautet: {@$user->email}
 
 {if LANGUAGE_USE_INFORMAL_VARIANT}Du hast{else}Sie haben{/if} auch eine Liste von Notfallcodes erhalten, falls der zusätzliche Faktor unbrauchbar werden sollte. **{if LANGUAGE_USE_INFORMAL_VARIANT}Hast du dir{else}Haben Sie sich{/if} die Notfallcodes notiert?** Falls {if LANGUAGE_USE_INFORMAL_VARIANT}du es vergessen hast, kannst du{else}Sie es vergessen haben, können Sie{/if} dies nachholen, indem {if LANGUAGE_USE_INFORMAL_VARIANT}du{else}Sie{/if} in der Verwaltung der Notfallcodes [URL:{link controller='MultifactorManage' object=$backupMethod isEmail=true}{/link}] neue Notfallcodes {if LANGUAGE_USE_INFORMAL_VARIANT}generierst{else}generieren{/if}.]]></item>
                <item name="wcf.user.security.multifactor.authentication.noPendingUserChange"><![CDATA[Die Mehrfaktor-Authentifizierung wurde nicht rechtzeitig abgeschlossen. Aus Sicherheitsgründen wurde der unvollständige Login-Vorgang abgebrochen. Bitte <a href="{link controller='Login'}{/link}">{if LANGUAGE_USE_INFORMAL_VARIANT}logge dich{else}loggen Sie sich{/if}</a> erneut ein.]]></item>
+               <item name="wcf.user.security.multifactor.authentication.noSetup"><![CDATA[Das Benutzerkonto <strong>{$user->username}</strong> ist mit der Mehrfaktor-Authentifizierung geschützt, es sind jedoch keine aktiven Verfahren verfügbar. Bitte {if LANGUAGE_USE_INFORMAL_VARIANT}wende dich{else}wenden Sie sich{/if} an den Administrator.]]></item>
        </category>
        <category name="wcf.user.trophy">
                <item name="wcf.user.trophy.trophyPoints"><![CDATA[Trophäen]]></item>
index bb9fda89aa1f3a3a03a8fa51a996a1aa33dfa0c3..5f9e62f0e990f478001f6c189dad5c7f3383b2d6 100644 (file)
@@ -4943,6 +4943,7 @@ You successfully enabled multi-factor authentication using the „{lang}wcf.user
 
 You also received a list of emergency codes to use when your second factor becomes unavailable. **Did you store these emergency codes securely?** If you forgot you can do now by generating new codes in the Emergency Code Management [URL:{link controller='MultifactorManage' object=$backupMethod isEmail=true}{/link}].]]></item>
                <item name="wcf.user.security.multifactor.authentication.noPendingUserChange"><![CDATA[The multi-factor authentication was not completed in time. The incomplete login process was aborted for security reasons. Please <a href="{link controller='Login'}{/link}">Login</a> once again.]]></item>
+               <item name="wcf.user.security.multifactor.authentication.noSetup"><![CDATA[The account <strong>{$user->username}</strong> is protected by multi-factor authentication, but no methods are set up. Please contact the administrator for support.]]></item>
        </category>
        <category name="wcf.user.trophy">
                <item name="wcf.user.trophy.trophyPoints"><![CDATA[Trophies]]></item>