=== Rad 2FA — Two-Factor Login (Email & Authenticator App) ===
Contributors: rad18
Tags: 2fa, two-factor, security, login, totp
Requires at least: 5.8
Tested up to: 7.1
Stable tag: 1.2.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Двухфакторная аутентификация для WordPress: код на почту или TOTP-приложение аутентификатора, по ролям пользователей.

== Description ==

Плагин добавляет второй фактор аутентификации для выбранных ролей пользователей. После корректного ввода логина и пароля требуется дополнительный код — на выбор администратора сайта:

* **Email** — одноразовый числовой код на почту пользователя.
* **Приложение-аутентификатор (TOTP)** — стандартный 6-значный код из приложения, например Google Authenticator, Authy или Microsoft Authenticator (плагин не аффилирован с Google и не одобрен Google). Пользователь подключает приложение в своём профиле: сканирует QR-код либо вводит закрытый ключ вручную.

Если сайт использует TOTP, а конкретный пользователь ещё не подключил приложение, при входе ему временно приходит код на почту — чтобы не потерять доступ к аккаунту.

Возможности:

* Включение 2FA по ролям пользователей
* Два способа подтверждения: email-код или приложение-аутентификатор (TOTP)
* Настраиваемая длина email-кода, время его жизни и лимит попыток ввода
* Экраны админки и письма с кодом следуют языку профиля конкретного пользователя WordPress (Пользователи → Профиль → Язык) — без отдельного переключателя языка плагина
* Email-код хранится только в виде хэша; секрет TOTP хранится зашифрованным (AES-256-CBC)
* QR-код генерируется полностью на стороне браузера — секрет не передаётся на сторонние сервисы

== Installation ==

1. Загрузите папку плагина в `/wp-content/plugins/`
2. Активируйте плагин в разделе «Плагины»
3. Перейдите в раздел Rad 2FA в главном меню админки, выберите роли и способ подтверждения
4. Если выбрано приложение-аутентификатор — каждый пользователь настраивает его в своём профиле (Пользователи → Ваш профиль)

== Frequently Asked Questions ==

= Что если пользователь не получил письмо с кодом? =

Проверьте настройки исходящей почты сайта (SMTP). Плагин использует стандартную функцию wp_mail().

= Можно ли включить 2FA не для всех, а для конкретных ролей? =

Да, в настройках плагина отмечаются роли, для которых 2FA обязательна.

= Что будет, если включить приложение-аутентификатор, но пользователь не успел его настроить? =

Такому пользователю код временно придёт на почту — это не блокирует вход.

= Можно ли администратору настроить приложение-аутентификатор за другого пользователя? =

Нет — секрет привязан к конкретному человеку и настраивается только им самим в своём профиле, из соображений безопасности.

= Защищает ли это Application Passwords / REST API? =

Нет. 2FA действует на форме входа (wp-login.php). Application Passwords в WordPress аутентифицируют запросы к REST API отдельным механизмом, который не проходит через форму входа, поэтому 2FA на них не распространяется. Если это критично для вашего сайта — отключите Application Passwords для аккаунтов, где обязательна 2FA.

= Этот плагин связан с Google? =

Нет. «Google Authenticator» упоминается только как пример совместимого приложения-аутентификатора; плагин реализует открытый стандартный алгоритм TOTP (RFC 6238) и работает с любым совместимым приложением.

== Credits ==

QR-код на экране подключения приложения генерируется на стороне браузера с помощью QRCode.js авторства davidshimjs (лицензия MIT). В плагине используется минифицированная сборка; неминифицированный исходник доступен на https://github.com/davidshimjs/qrcodejs

== Screenshots ==

1. Настройки — выбор ролей, для которых обязательна 2FA, и способа подтверждения (код на почту или приложение-аутентификатор).
2. Подключение приложения-аутентификатора в своём профиле — сканирование QR-кода или ручной ввод ключа.

== Upgrade Notice ==

= 1.2.0 =
Плагин переименован в Rad 2FA. Язык админки теперь следует языку профиля пользователя WordPress вместо отдельного переключателя плагина.

= 1.1.1 =
Усиление безопасности: защита от повторного использования TOTP-кода, проверка целостности зашифрованного секрета, ограничение частоты выпуска challenge при входе.

== Changelog ==

= 1.2.0 =
* Переименован в Rad 2FA (ранее OTP Sentinel)
* Убран отдельный переключатель языка плагина; экраны админки и письма с кодом теперь следуют языку профиля пользователя WordPress (Пользователи → Профиль → Язык)
* Инлайн-скрипты админки вынесены в properly enqueued файлы

= 1.1.1 =
* TOTP-код больше нельзя использовать повторно между попытками входа
* Зашифрованный TOTP-секрет теперь проверяется на целостность (HMAC)
* Ограничена частота выпуска challenge при входе — снижает риск email-спама и перебора
* Исправлена ошибка двойного кодирования redirect_to при редиректе после входа
* Добавлен uninstall.php для удаления данных плагина при удалении
* При активации теперь проверяется наличие расширения OpenSSL

= 1.1.0 =
* Добавлена поддержка приложения-аутентификатора (TOTP) как альтернативы email-коду
* Настройки перенесены в отдельный пункт меню верхнего уровня

= 1.0.0 =
* Первый релиз
