4e803c53e0
- Модель Employee: totp_secret (шифруется), totp_enabled, totp_backup_codes - Сервис twofa: генерация секрета/QR, проверка TOTP, резервные коды (sha256) - TwoFactorMiddleware: enforcement для is_staff на портале и /admin/ - Страницы setup/verify/backup-codes; сброс 2fa_verified при каждом входе - Админка: колонка статуса 2FA, фильтр, действие «Сбросить 2FA» - Тесты: enforcement, setup, verify, резервные коды, disable Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
2.0 KiB
HTML
29 lines
2.0 KiB
HTML
{% load static %}
|
|
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Резервные коды — АКС Портал</title>
|
|
<link rel="stylesheet" href="{% static 'assets/css/main.css' %}">
|
|
</head>
|
|
<body style="background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-sidebar-accent) 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; font-family: var(--font-sans);">
|
|
|
|
<div style="width: 100%; max-width: 28rem; background: var(--color-card); border-radius: 0.75rem; border: 1px solid var(--color-border); box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1); overflow: hidden;">
|
|
<div style="padding: 1.75rem 2rem 1.25rem; text-align: center; border-bottom: 1px solid var(--color-border);">
|
|
<h1 style="font-size: 1.25rem; font-weight: 600; color: var(--color-foreground); margin-bottom: 0.375rem;">2FA включена ✓</h1>
|
|
<p style="font-size: 0.875rem; color: var(--color-muted-foreground);">Сохраните резервные коды в надёжном месте. Каждый работает один раз — используйте их, если потеряете доступ к приложению. Больше они не будут показаны.</p>
|
|
</div>
|
|
|
|
<div style="padding: 1.75rem 2rem;">
|
|
<div style="display:grid; grid-template-columns:1fr 1fr; gap:0.5rem; margin-bottom:1.25rem;">
|
|
{% for code in codes %}
|
|
<code style="background:var(--color-muted); border:1px solid var(--color-border); border-radius:0.375rem; padding:0.5rem; text-align:center; font-size:0.95rem; font-weight:600; letter-spacing:0.05em; color:var(--color-foreground);">{{ code }}</code>
|
|
{% endfor %}
|
|
</div>
|
|
<a href="/" class="btn btn-primary" style="width:100%; justify-content:center; text-decoration:none;">Я сохранил коды — продолжить</a>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|