Плагин Login OTP (2FA) это двухфакторнаю аутентификация для CMF Cotonti v.0.9.26. Пользователю отправляется одноразовый 5-значный код на электронную почту для авторизации.
Login OTP (2FA) — Двухфакторная аутентификация по email
Плагин Login OTP (2FA) для Cotonti Siena
Описание
Плагин Login OTP (2FA) добавляет двухфакторную аутентификацию (2FA) для системы управления контентом Cotonti Siena v.0.9.26. После ввода логина и пароля пользователю отправляется одноразовый 5-значный код (OTP) на электронную почту. Код необходимо ввести на специальной странице для завершения авторизации. Это повышает безопасность входа, защищая от несанкционированного доступа, даже если пароль пользователя был скомпрометирован.
Плагин полностью интегрируется с ядром Cotonti, поддерживает локализацию (английский, русский, украинский) и имеет адаптивный интерфейс на основе Bootstrap 5 и Bootstrap Icons.
Основные возможности
Генерация одноразового 5-значного кода (OTP) для входа.
Отправка кода на email пользователя.
Настраиваемый срок действия кода (по умолчанию 5 минут).
Поддержка опции «Запомнить меня» для сохранения сессии.
Адаптивный интерфейс страницы ввода кода с валидацией.
Логирование успешных и неуспешных попыток ввода OTP.
Регистрирует метаданные плагина в админ-панели Cotonti. Содержит конфигурацию плагина (включение 2FA, время жизни кода).
loginotp.install.sql
SQL-скрипт для создания таблицы cot_loginotp, в которой хранятся OTP-коды, их срок действия и пользовательские данные.
loginotp.uninstall.sql
SQL-скрипт для удаления таблицы cot_loginotp при деинсталляции плагина.
loginotp.users.login.check.php
Перехватывает процесс авторизации (хуки users.auth.check). Проверяет логин/пароль, генерирует OTP, сохраняет его в базе и отправляет на email. Редиректирует на страницу ввода кода.
loginotp.php
Обрабатывает страницу ввода OTP (хуки standalone). Проверяет введённый код, авторизует пользователя при успехе или показывает ошибку при неудаче.
inc/loginotp.functions.php
Содержит основные функции плагина: инициализация, проверка активности 2FA, генерация OTP-кода.
lang/loginotp.en.lang.php
Локализация на английском языке.
lang/loginotp.ru.lang.php
Локализация на русском языке.
lang/loginotp.ua.lang.php
Локализация на украинском языке.
tpl/loginotp.tpl
Шаблон страницы ввода OTP. Содержит HTML-форму с Bootstrap-стилями, валидацией и иконками.
otp_lifetime: Время жизни OTP-кода в секундах (300, 600, 900 секунд).
Отправка email функция cot_mail().
Использование
Пользователь вводит логин (или email, если разрешено) и пароль на стандартной странице входа Cotonti.
Если логин и пароль верны, плагин генерирует 5-значный OTP-код, сохраняет его в базе и отправляет на email пользователя.
Пользователь перенаправляется на страницу ввода кода (plug.php?e=loginotp).
На странице ввода кода пользователь вводит полученный OTP. Форма проверяет:
Код должен быть 5-значным числом.
Код не должен быть просрочен (срок действия указан в настройках).
При правильном коде пользователь авторизуется и перенаправляется на целевую страницу (или главную). При неверном коде показывается ошибка, и пользователь может попробовать снова.
Логирование
Плагин записывает в лог Cotonti (Администрирование → Логи) следующие события:
Успешная авторизация:OTP SUCCESS: user_id=X
Неуспешная попытка:OTP FAIL: user_id=X, code=Y
Локализация
Плагин поддерживает три языка:
Английский (loginotp.en.lang.php)
Русский (loginotp.ru.lang.php)
Украинский (loginotp.ua.lang.php)
Языковые файлы содержат все сообщения, отображаемые пользователю: заголовки, подсказки, ошибки и текст email. Язык определяется настройками Cotonti.
Шаблон (loginotp.tpl)
Шаблон loginotp.tpl использует Bootstrap 5 для стилизации и включает:
Адаптивную форму ввода кода с автоматической фокусировкой на поле.
Валидацию на стороне клиента (JavaScript): проверка на 5-значное число.
Иконки Bootstrap Icons для уведомлений (информация/ошибка).
Стилизованную кнопку отправки с эффектом ховера.
Подсказку о сроке действия кода (5 минут) (от фонаря пока, нужно заводить из $valSome = (int) Cot::$cfg['plugin']['loginotp']['otp_lifetime'];).
Конфигурация
Настройки плагина доступны в админ-панели:
otp_enabled: Радиокнопка для включения/выключения 2FA (по умолчанию выключено).
otp_lifetime: Выпадающий список для выбора времени жизни кода (300, 600, 900 секунд; по умолчанию 600 секунд).
Деинсталляция
Перейдите в Администрирование → Расширения → Login OTP → Удалить.
Скрипт loginotp.uninstall.sql автоматически удалит таблицу cot_loginotp.