54 lines
3.0 KiB
PHP
54 lines
3.0 KiB
PHP
<?php
|
|
/*
|
|
* Activation de la double authentification : à la première connexion, ou depuis Mon compte (nouveau téléphone).
|
|
* Variables : $cle (clé en base32), $adresse (otpauth://), $erreur, $connecte.
|
|
*/
|
|
$etapes = static function () use ($cle, $adresse, $erreur, $connecte): void { ?>
|
|
<ol class="etapes-2fa">
|
|
<li>
|
|
<strong><?= e(t('Installez une application d\'authentification sur votre téléphone.')) ?></strong>
|
|
<span><?= e(t('Google Authenticator, Microsoft Authenticator ou le gestionnaire de mots de passe que vous utilisez déjà (Bitwarden, 1Password, Mots de passe d\'Apple).')) ?></span>
|
|
</li>
|
|
<li>
|
|
<strong><?= e(t('Dans l\'application, ajoutez un compte et scannez ce QR code.')) ?></strong>
|
|
<span class="qr" data-qr="<?= e($adresse) ?>" role="img" aria-label="<?= e(t('QR code à scanner')) ?>"></span>
|
|
<span><?= e(t('Pas de QR code ? Saisissez cette clé à la main, en type « basé sur l\'heure » :')) ?></span>
|
|
<code class="cle-2fa"><?= e(Totp::lisible($cle)) ?></code>
|
|
</li>
|
|
<li>
|
|
<strong><?= e(t('Saisissez le code à 6 chiffres que l\'application affiche.')) ?></strong>
|
|
<form method="post" action="<?= e(url('double_authentification')) ?>" class="pile">
|
|
<?= champ_csrf() ?>
|
|
<?php if ($erreur): ?><p class="flash flash-erreur" role="alert"><?= e($erreur) ?></p><?php endif; ?>
|
|
<label><?= e(t('Code')) ?>
|
|
<input type="text" name="code" required autocomplete="one-time-code" inputmode="numeric" maxlength="7" class="code-saisie" placeholder="123456" spellcheck="false">
|
|
</label>
|
|
<?php if ($connecte): ?>
|
|
<label><?= e(t('Votre mot de passe')) ?>
|
|
<input type="password" name="mot_de_passe" required autocomplete="current-password">
|
|
</label>
|
|
<?php endif; ?>
|
|
<button type="submit"><?= e(t('Activer')) ?></button>
|
|
</form>
|
|
</li>
|
|
</ol>
|
|
<?php };
|
|
?>
|
|
<?php if ($connecte): ?>
|
|
<p class="fil"><a href="<?= e(url('compte')) ?>"><?= e(t('Mon compte')) ?></a> / <?= e(t('Double authentification')) ?></p>
|
|
<section class="carte moyen">
|
|
<h1><?= e(t('Configurer une autre application')) ?></h1>
|
|
<p class="aide"><?= e(t('Nouveau téléphone ou nouvelle application : l\'ancienne cessera de fonctionner dès que celle-ci sera activée. Vos autres sessions seront fermées et vous recevrez dix nouveaux codes de secours.')) ?></p>
|
|
<?php $etapes(); ?>
|
|
</section>
|
|
<?php else: ?>
|
|
<div class="porte porte-large">
|
|
<img src="assets/logo-itclub-or.png" alt="<?= e(t('IT Club')) ?>" width="224" height="70">
|
|
<p class="porte-nom"><?= e(config('nom_app')) ?></p>
|
|
<p class="porte-role"><?= e(t('Dernière étape : la double authentification. À chaque connexion, Vivier vous demandera votre mot de passe puis un code de votre téléphone.')) ?></p>
|
|
<?php $etapes(); ?>
|
|
<p class="porte-lien"><a href="<?= e(url('securite')) ?>" target="_blank" rel="noopener"><?= e(t('Pourquoi cette étape ?')) ?></a></p>
|
|
</div>
|
|
<?php endif; ?>
|
|
<script src="assets/qrcode.js?v=1.8" defer></script>
|