2FA-Reife: Recovery-Codes, Enforce-Policy für Admins, Admin-Reset

- Recovery-/Backup-Codes (8x, einmalig nutzbar) bei Aktivierung + Regenerieren;
  Login akzeptiert TOTP ODER Recovery-Code
- Setting enforce_2fa_admins: Admins ohne 2FA werden zur Einrichtung geleitet
- Admin kann 2FA eines Nutzers zurücksetzen (admin/users.php)
- Schema 0003 (users.totp_backup_codes); security.php zeigt Codes & Restanzahl
This commit is contained in:
Claude 2026-06-05 20:45:28 +00:00
parent dce10a8a08
commit ba121d60e6
No known key found for this signature in database
7 changed files with 179 additions and 12 deletions

View file

@ -169,13 +169,15 @@ try {
<?php if ($show2fa): ?>
<form method="post">
<p style="color:var(--text-secondary,#666);font-size:14px;margin-bottom:18px;">
Bitte geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein.
Bitte geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein
oder einen Ihrer Recovery-Codes.
</p>
<div class="form-group">
<label for="totp_code">Authentifizierungs-Code</label>
<input type="text" id="totp_code" name="totp_code" inputmode="numeric" pattern="[0-9]*"
maxlength="6" autocomplete="one-time-code" required autofocus
style="letter-spacing:6px;text-align:center;font-size:20px;">
<label for="totp_code">Code</label>
<input type="text" id="totp_code" name="totp_code" maxlength="9"
autocomplete="one-time-code" required autofocus
placeholder="123456 oder XXXX-XXXX"
style="letter-spacing:3px;text-align:center;font-size:18px;">
</div>
<button type="submit" class="btn">Bestätigen</button>
</form>