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>
11 lines
526 B
Python
11 lines
526 B
Python
"""Сброс отметки 2fa_verified при каждом входе — чтобы после логина
|
|
(и на портале, и в /admin/) требовалась свежая проверка второго фактора."""
|
|
from django.contrib.auth.signals import user_logged_in
|
|
from django.dispatch import receiver
|
|
|
|
|
|
@receiver(user_logged_in)
|
|
def clear_2fa_verified(sender, request, user, **kwargs):
|
|
if request is not None and hasattr(request, 'session'):
|
|
request.session.pop('2fa_verified', None)
|