Вторая часть задачи — подстраховка на случай утери телефона. При первой привязке двухфакторной защиты система должна выдать набор резервных кодов для одноразового использования: пользователь сохраняет их отдельно и применяет вместо кода из приложения, если устройство недоступно. После использования каждый такой код становится недействительным, а при необходимости пользователь может сбросить привязку и настроить защиту заново — но эта процедура должна быть с проверками, а не превращаться в дыру для обхода.
Третий момент — не пожелание, а требование: для аккаунтов с расширенными полномочиями (модерация, поддержка, любой доступ к чужим данным) двухфакторная защита должна быть включена принудительно и не иметь варианта «пропустить». Обычным пользователям функцию стоит предложить как опцию, включаемую по желанию из настроек профиля.
Ожидаю от исполнителя:
— механизм привязки аутентификатора (QR-код и ручной ключ)
— проверку одноразового кода при входе с ограничением количества попыток
— генерацию и учёт одноразовых резервных кодов
— отдельный флаг обязательности для привилегированных ролей
— аккуратный сценарий сброса при утере устройства