diff --git a/templates/LoginForm.php b/templates/LoginForm.php index e3083c6f39e8ad30328ff4dcf233dc5253d7f610..93528e049d521a69a0bf0a70ed4f86d082bb6b46 100644 --- a/templates/LoginForm.php +++ b/templates/LoginForm.php @@ -3,10 +3,15 @@ use SimpleSAML\Module; $this->data['u2fAvailable'] = !empty($this->data['u2fSignRequest']); -$this->data['webAuthnAvailable'] = !empty($this->data['webAuthnSignRequest']); -$this->data['noAlternatives'] = !$this->data['pushAvailable'] && (!$this->data['u2fAvailable']) && (!$this->data['webAuthnAvailable']); - +$this->data['webauthnAvailable'] = !empty($this->data['webAuthnSignRequest']); $this->data['mode'] = ($this->data['mode'] ?? null) ?: 'otp'; +$this->data['noAlternatives'] = true; +foreach (['otp', 'push', 'u2f', 'webauthn'] as $mode) { + if ($mode !== $this->data['mode'] && $this->data[$mode . 'Available']) { + $this->data['noAlternatives'] = false; + break; + } +} // Set default scenario if isn't set if (!empty($this->data['authProcFilterScenario'])) { @@ -259,7 +264,7 @@ if (null !== $this->data['errorCode']) { <div id="AlternateLoginOptions" class="groupMargin hidden js-show"> <h3><?php echo $this->t('{privacyidea:privacyidea:alternate_login_options}'); ?></h3> <!-- Alternate Login Options--> - <?php if (($this->data['webAuthnAvailable'] ?? false) && 'webauthn' !== $this->data['mode']) { ?> + <?php if (($this->data['webauthnAvailable'] ?? false) && 'webauthn' !== $this->data['mode']) { ?> <button id="useWebAuthnButton" name="useWebAuthnButton" type="button"> <span><?php echo $this->t('{privacyidea:privacyidea:webauthn}'); ?></span> </button>