Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

Двухфакторная аутентификация по email для Cotonti

Плагин Login OTP (2FA) это двухфакторнаю аутентификация для CMF Cotonti v.0.9.26. Пользователю отправляется одноразовый 5-значный код на электронную почту для авторизации.

0 Published Filed under: Cotonti Siena CMF Author Plugins for Cotonti

Login OTP (2FA) — Двухфакторная аутентификация по email

Плагин Login OTP (2FA) для Cotonti Siena

Описание

Плагин Login OTP (2FA) добавляет двухфакторную аутентификацию (2FA) для системы управления контентом Cotonti Siena v.0.9.26. После ввода логина и пароля пользователю отправляется одноразовый 5-значный код (OTP) на электронную почту. Код необходимо ввести на специальной странице для завершения авторизации. Это повышает безопасность входа, защищая от несанкционированного доступа, даже если пароль пользователя был скомпрометирован.

 

att_752.png

 

Плагин полностью интегрируется с ядром Cotonti, поддерживает локализацию (английский, русский, украинский) и имеет адаптивный интерфейс на основе Bootstrap 5 и Bootstrap Icons.

Основные возможности

  • Генерация одноразового 5-значного кода (OTP) для входа.
  • Отправка кода на email пользователя.
  • Настраиваемый срок действия кода (по умолчанию 5 минут).
  • Поддержка опции «Запомнить меня» для сохранения сессии.
  • Адаптивный интерфейс страницы ввода кода с валидацией.
  • Логирование успешных и неуспешных попыток ввода OTP.
  • Многоязычная поддержка: английский, русский, украинский.
  • Интеграция с настройками Cotonti (включение/выключение 2FA, настройка времени жизни кода).

Требования

  • CMF Cotonti Siena: v.0.9.26
  • PHP: 8.4 или выше
  • MySQL: 8.0 или выше
  • Настроенный почтовый сервер для отправки email (через функцию cot_mail()).

Структура плагина

Плагин имеет следующую структуру файлов:

plugins/
└── loginotp/
├── loginotp.setup.php
├── loginotp.install.sql
├── loginotp.uninstall.sql
├── loginotp.users.login.check.php
├── loginotp.php
├── inc/
│   ├── loginotp.functions.php
├── lang/
│   ├── loginotp.en.lang.php
│   ├── loginotp.ru.lang.php
│   ├── loginotp.ua.lang.php
├── tpl/
│   ├── loginotp.tpl

 

Описание файлов

ФайлОписание
loginotp.setup.phpРегистрирует метаданные плагина в админ-панели Cotonti. Содержит конфигурацию плагина (включение 2FA, время жизни кода).
loginotp.install.sqlSQL-скрипт для создания таблицы cot_loginotp, в которой хранятся OTP-коды, их срок действия и пользовательские данные.
loginotp.uninstall.sqlSQL-скрипт для удаления таблицы 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-стилями, валидацией и иконками.

Установка

  1. Скачайте плагин из репозитория.
  2. Распакуйте архив и скопируйте папку loginotp в директорию plugins/ вашего сайта на Cotonti.
  3. Перейдите в админ-панель Cotonti: Администрирование → Расширения → Установить новые.
  4. Найдите плагин Login OTP (2FA) и нажмите Установить. Скрипт loginotp.install.sql автоматически создаст таблицу cot_loginotp.
  5. Настройте плагин в разделе Администрирование → Расширения → Login OTP → Конфигурация:
    • otp_enabled: Включить/выключить 2FA (1 = включено, 0 = выключено).
    • otp_lifetime: Время жизни OTP-кода в секундах (300, 600, 900 секунд).
  6. Отправка email функция cot_mail().

Использование

  1. Пользователь вводит логин (или email, если разрешено) и пароль на стандартной странице входа Cotonti.
  2. Если логин и пароль верны, плагин генерирует 5-значный OTP-код, сохраняет его в базе и отправляет на email пользователя.
  3. Пользователь перенаправляется на страницу ввода кода (plug.php?e=loginotp).
  4. На странице ввода кода пользователь вводит полученный OTP. Форма проверяет:
    • Код должен быть 5-значным числом.
    • Код не должен быть просрочен (срок действия указан в настройках).
  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 секунд).

Деинсталляция

  1. Перейдите в Администрирование → Расширения → Login OTP → Удалить.
  2. Скрипт loginotp.uninstall.sql автоматически удалит таблицу cot_loginotp.
  3. Удалите папку plugins/loginotp с сервера.

Лицензия

Плагин распространяется под лицензией BSD. Подробности в файле loginotp.setup.php.
Copyright © 2025 webitproff. Все права защищены.

Контакты и поддержка

Автор: webitproff
GitHub: github.com/webitproff
Для вопросов, предложений или сообщений об ошибках создавайте issue в репозитории.

Версия: 1.1.3 | Дата: 2025-10-26 | Лицензия: BSD
Репозиторий на GitHub

Лицензия BSD License Copyright (c) webitproff 2025

 

No comments yet
Only registered users can post new comments
Account