Files
ACORE/apps/employees/signals_2fa.py
T
lokses 4e803c53e0 2FA: обязательная двухфакторная аутентификация (TOTP) для staff
- Модель 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>
2026-07-28 10:41:11 +03:00

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)