User Demo Admin - безопасная демонстрация админ-панели Cotonti.

User Demo Admin — административный плагин для Cotonti, который позволяет создавать пользователей с ограниченными правами («демо-администраторов») что бы полноценный интерфейс админ-панели

Статус: Опубликован

115

Код user_demo_admin

Параметры и значения товара в фильтрах

Категория расширения
  • Администрирование и управление;
  • Безопасность и аутентификация

Руководство по плагину User Demo Admin для Cotonti

Версия: 5.0.0
Автор: webitproff
Лицензия: BSD
Требования: Cotonti (актуальная версия), модуль users


Оглавление

  1. Обзор плагина и его назначение
  2. Бизнес-логика плагина
  3. Взаимодействие демо-админа с интерфейсом сайта
  4. Техническая памятка по установке и удалению плагина
  5. Предупреждения безопасности
  6. Рекомендации по дальнейшей модификации
  7. Выводы

1. Обзор плагина и его назначение

Плагин User Demo Admin предназначен для создания пользователей с особым уровнем доступа — «демонстрационный администратор» или «администратор только для чтения».

Основная цель — предоставить ограниченный доступ в административную панель Cotonti доверенным лицам (аудит, обучение, демонстрация) без риска случайного или намеренного изменения настроек, контента, прав или структуры сайта.

Плагин "User Demo Admin" - это совершенно новое и экспериментальное расширение для CMF Cotonti. 
Используйте его на свой страх и риск. 
Плагин не был полностью протестирован, чтобы делать смелые заявления. 
По большей части плагин решает задачи, которые ставятся перед мной (как разработчиком расширений и шаблонов), но я рекомендую вам использовать его с особой осторожностью!

 

Пользователь из группы Demo Admin сможет:

  • войти в административную панель;
  • просматривать практически все разделы админки, включая настройки, списки пользователей, страницы, модули и плагины;
  • видеть интерфейс и данные так, как их видит полноценный администратор.

При этом он не сможет:

  • сохранять изменения (конфигурация, контент, права);
  • удалять или редактировать записи;
  • устанавливать/удалять расширения;
  • выполнять любые операции, изменяющие состояние системы.

Фактически плагин имитирует режим «только просмотр» для админ-панели, аналогичный демо-режиму в OpenCart или PrestaShop.

Важно: плагин не изменяет структуру базы данных Cotonti. Используются только стандартные таблицы: cot_groups, cot_auth, cot_groups_users, cot_users.


2. Бизнес-логика плагина

2.1. Создание группы «Demo Admin»

При первом обращении к плагину (или при его установке) функция cot_user_demo_admin_ensure_group() проверяет наличие группы с заданным алиасом (по умолчанию demo_admin). Если группа не найдена, она создаётся в таблице cot_groups со следующими параметрами:

  • grp_name = «Demo Admin»
  • grp_title = «Demo Admin»
  • grp_level = 50 (достаточно высокий, чтобы отображаться как привилегированная группа)
  • grp_alias = demo_admin (настраивается в конфигурации)
  • grp_skiprights = 0 (права используются)
  • grp_pfs_maxfile / grp_pfs_maxtotal = 0 (загрузка файлов запрещена)

2.2. Назначение прав доступа

Плагин использует стандартную систему прав Cotonti, основанную на битовых масках в таблице cot_auth. Для группы демо-администратора устанавливаются следующие права:

ОбластьКодПрава (число)Значение
Админ-панельadmin129R (чтение) + A (доступ в админку)
Пользователиusers1R (только чтение)
Сообщенияmessage1R
Структураstructure1R
Все модули(каждый)1R
Все плагиныplug / код1R
Все категории структуры(код модуля) / категория1R (для каждой категории)

Битовые маски:

  • R = 1 (чтение)
  • W = 2 (запись)
  • A = 128 (административный доступ)

Для admin ставится 129 = 1+128, что даёт право на вход в админку, но не даёт права записи (W) и дополнительных привилегий (1-5).
Все остальные области получают только R = 1.

Права на категории структуры. Плагин выдаёт право R не только на корневые разделы модулей (auth_option = 'a'), но и на каждую категорию структуры (например, все категории модуля page, forums и т.д.). Это необходимо, чтобы демо-администратор мог видеть материалы, доступ к которым проверяется через права категорий. Без этого шага пользователь не увидел бы даже публичные страницы и записи.

Для всех прав устанавливается auth_rights_lock = 254, что блокирует изменение этих прав через стандартный интерфейс редактирования (биты R, W, A и дополнительные заблокированы). Это предотвращает случайное расширение прав демо-группы самим демо-пользователем.

2.3. Защита от операций записи

Поскольку штатная система прав Cotonti не может полностью запретить запись при наличии доступа в админку (многие скрипты проверяют только cot_auth('admin', 'a', 'A')), плагин добавляет дополнительный уровень защиты через глобальный хук.

В файле user_demo_admin.global.php реализована проверка:

  • Если текущий пользователь принадлежит к группе Demo Admin и находится в админке, то:
    • переменная Cot::$usr['auth_write'] принудительно устанавливается в false;
    • анализируется входящий запрос:
      • если метод POST → считается попыткой записи;
      • если параметр a (действие) входит в список опасных (update, save, add, edit, delete, install, uninstall, config, rights и др.) → попытка записи;
      • если запрошен раздел m=config или m=rights → попытка записи.
  • При обнаружении попытки записи:
    • очищаются массивы $_POST и $_REQUEST;
    • выводится предупреждение «Режим демонстрации: изменения не сохраняются...»;
    • выполняется перенаправление на предыдущую страницу (или на главную админки).

Таким образом, любые POST-запросы и действия, которые обычно приводят к изменению данных, блокируются ещё до выполнения основной логики.

2.4. Создание пользователя демо-администратора

В административном интерфейсе плагина (вкладка «Создать пользователя») администратор может ввести имя, email и пароль. После валидации данных (проверка длины, формата, уникальности) вызывается стандартная функция cot_add_user() с указанием основной группы $groupId (ID группы Demo Admin). Созданный пользователь сразу получает все права этой группы.

Письмо активации не отправляется ($sendemail = false).


3. Взаимодействие демо-админа с интерфейсом сайта

3.1. Что можно просматривать

После входа в админ-панель демо-администратор увидит стандартное левое меню и сможет открыть следующие разделы:

  • Главная страница админки (обзорная информация).
  • Настройки (конфигурация сайта) — все вкладки: основные, безопасность, производительность, темы и т.д. (в режиме просмотра).
  • Пользователи — список пользователей, поиск, просмотр профилей (без кнопок редактирования).
  • Страницы (если модуль page установлен) — список страниц, структура категорий, просмотр содержимого.
  • Расширения — список модулей и плагинов, их настройки (только просмотр, кнопки «Сохранить» будут неактивны или их нажатие будет заблокировано).
  • Структура сайта — просмотр категорий и параметров.
  • Права доступа — интерфейс просмотра прав групп (с возможным отображением, но без сохранения).
  • Инструменты, Файлы, Кэш и другие разделы, доступные обычному администратору.

Благодаря установленным правам R на все модули и категории, демо-админ не увидит сообщений «Нет доступа» при попытке открыть страницы.

Ниже приведена сводная таблица доступа:

ЗонаЧто можноЧто нельзя / что происходит
ФронтендЧитать страницы, списки, профили пользователей, категорииРедактировать, удалять, добавлять контент (если нет других групп)
Вход в админкуДа—
Просмотр разделов админкиПочти все разделы (Configuration, Extensions, Structure, Users, Page и т.д.)—
Кнопки «Сохранить», «Обновить», «Добавить», «Удалить»Видит кнопки и формыПри нажатии — предупреждение «Режим демонстрации...» + редирект, данные не сохраняются
Конфигурация сайта и плагиновМожет открыть и смотретьСохранение блокируется
Права группМожет открытьИзменение блокируется
Установка / удаление расширенийВидит списокДействия блокируются
Собственный плагин User Demo AdminМожет смотреть список демо-пользователейСоздание новых демо-пользователей и изменение прав — только у настоящего администратора

Важно: демо-пользователь не является супер-администратором. Он просто имеет право войти в админку и читать.

3.2. Какие операции запрещены

Все операции, которые изменяют состояние системы, будут заблокированы:

  • Сохранение любых настроек (конфигурация, темы, модули, плагины).
  • Добавление, редактирование, удаление пользователей, страниц, категорий, файлов и т.п.
  • Установка, обновление, удаление расширений.
  • Изменение прав доступа.
  • Очистка кэша, выполнение SQL-запросов и других опасных действий.

Формально интерфейс может содержать кнопки «Сохранить», «Обновить», «Удалить» и т.д., но при попытке их нажать (т.е. отправить POST-запрос или действие, классифицированное как опасное) сработает защита.

3.3. Поведение при попытке сохранения

Когда демо-админ нажимает кнопку сохранения, происходит следующее:

  1. Браузер отправляет запрос на сервер (обычно POST с параметрами).
  2. Глобальный хук плагина перехватывает этот запрос.
  3. Если пользователь определён как демо-админ, а запрос содержит опасные признаки (POST или a в списке запрещённых), выполняются действия:
    • очищаются $_POST и часть $_REQUEST;
    • выводится сообщение-предупреждение (обычно всплывающее уведомление);
    • происходит редирект на предыдущую страницу или главную админки.
  4. Целевой скрипт (например, сохранение конфигурации) не выполняется, данные не изменяются.

4. Техническая памятка по установке и удалению плагина

4.1. Установка

  1. Скопируйте папку user_demo_admin в директорию plugins/ вашего сайта.
  2. Войдите в административную панель Cotonti под учётной записью с полными правами.
  3. Перейдите в раздел Расширения → Плагины.
  4. Найдите плагин User Demo Admin в списке доступных.
  5. Нажмите кнопку Установить.

После установки:

  • Будет выполнена функция cot_user_demo_admin_ensure_group() (если она не была вызвана раньше), создающая группу и права.
  • Плагин появится в админ-панели в разделе Администрирование → User Demo Admin (или через ссылку admin.php?m=other&p=user_demo_admin).

Рекомендуется после установки зайти в плагин, открыть вкладку «Права» и нажать «Сохранить права» — это гарантирует пересоздание прав на все текущие категории структуры.

4.2. Удаление

  1. В разделе Расширения → Плагины найдите установленный плагин User Demo Admin.
  2. Нажмите кнопку Удалить.

Во время удаления выполняется скрипт uninstall.php, который:

  • находит группу по алиасу;
  • переводит всех пользователей этой группы в основную группу Members (ID = 4);
  • удаляет все связи пользователей с группой в таблице cot_groups_users;
  • удаляет все права группы из таблицы cot_auth;
  • удаляет саму группу из cot_groups;
  • очищает кэш авторизации (cot_auth_clear('all')).

Важно: после удаления плагина пользователи, относившиеся к демо-группе, теряют доступ в админку и становятся обычными участниками.

Перед удалением рекомендуется вручную удалить или перевести демо-пользователей.

4.3. Файл установки (install.php)

defined('COT_CODE') or die('Wrong URL');

require_once cot_incfile('user_demo_admin', 'plug', 'functions');

$groupId = cot_user_demo_admin_ensure_group();

if (!$groupId) {
    cot_error('Failed to create Demo Admin group');
}

Что делает:

  • Подключает файл функций плагина.
  • Вызывает cot_user_demo_admin_ensure_group(), которая создаёт группу и назначает все необходимые права.
  • Если группа не может быть создана, выводит сообщение об ошибке.

4.4. Файл удаления (uninstall.php)

defined('COT_CODE') or die('Wrong URL');

$alias = Cot::$cfg['plugin']['user_demo_admin']['group_alias'] ?? 'demo_admin';

$group = Cot::$db->query(
    'SELECT grp_id FROM ' . Cot::$db->groups . ' WHERE grp_alias = ? LIMIT 1',
    [$alias]
)->fetch();

if ($group) {
    $groupId = (int) $group['grp_id'];

    Cot::$db->update(
        Cot::$db->users,
        ['user_maingrp' => COT_GROUP_MEMBERS],
        'user_maingrp = ?',
        [$groupId]
    );

    Cot::$db->delete(Cot::$db->groups_users, 'gru_groupid = ?', [$groupId]);
    Cot::$db->delete(Cot::$db->auth, 'auth_groupid = ?', [$groupId]);
    Cot::$db->delete(Cot::$db->groups, 'grp_id = ?', [$groupId]);

    cot_auth_clear('all');
}

Что делает:

  • Находит ID группы по алиасу.
  • Обновляет user_maingrp всех пользователей этой группы на стандартную группу Members (4).
  • Удаляет связи в cot_groups_users, права в cot_auth и саму группу.
  • Сбрасывает кэш прав.

4.5. Структура файлов плагина

plugins/user_demo_admin/
├── user_demo_admin.setup.php          — регистрация и настройки
├── user_demo_admin.global.php         — защита от записи + stub
├── user_demo_admin.admin.php          — основной интерфейс (tools)
├── inc/
│   └── user_demo_admin.functions.php  — вся бизнес-логика
├── lang/
│   └── user_demo_admin.ru.lang.php    — русский язык
├── tpl/
│   └── user_demo_admin.admin.tpl      — шаблон админки
└── setup/
    ├── user_demo_admin.install.php
    └── user_demo_admin.uninstall.php

5. Предупреждения безопасности

Плагин User Demo Admin предоставляет довольно широкий доступ к административной информации. Несмотря на все предпринятые меры, следует учитывать следующие риски:

  1. Обход защиты через прямые запросы.
    Теоретически, зная структуру Cotonti, демо-пользователь может попытаться отправить нестандартный POST-запрос, не содержащий запрещённых параметров a. Защита блокирует большинство сценариев, но не гарантирует 100% изоляцию.
  2. Утечка конфиденциальных данных.
    Демо-админ может видеть email пользователей, настройки безопасности, пути к файлам, список установленных расширений и другую чувствительную информацию. Не давайте такой доступ незнакомым людям.
  3. Влияние на производительность.
    Пользователь с доступом в админку может открывать тяжёлые страницы (например, список всех пользователей с большим количеством записей), что может нагружать сервер. При необходимости ограничьте количество демо-пользователей.
  4. Изменение прав через стандартный интерфейс.
    Плагин блокирует права группы через auth_rights_lock=254, но если кто-то с полным доступом случайно снимет блокировку через прямое редактирование БД, демо-админ может повысить свои права. Регулярно проверяйте целостность настроек.
  5. Несовместимость с некоторыми сторонними плагинами.
    Некоторые плагины могут выполнять сохранение через AJAX или альтернативные методы, не перехватываемые стандартным хуком global. В таких случаях защита может не сработать. Перед предоставлением демо-доступа протестируйте все критически важные расширения.
  6. Пароль демо-пользователя должен быть сложным.
    Не используйте demo, 123456 и т.п. Рекомендуется генерировать надёжный пароль.
  7. Не оставляйте демо-пользователей надолго.
    После завершения демонстрации или тестирования удалите или заблокируйте таких пользователей.
  8. Супер-администратор всегда может изменить права группы Demo Admin.
    Следите за тем, чтобы права группы не были случайно расширены.

Рекомендации:

  • Используйте плагин только для ограниченного круга доверенных лиц.
  • Не сообщайте демо-учётные данные публично.
  • Периодически проверяйте, что группа и права не были изменены.
  • При обнаружении попыток несанкционированного изменения – немедленно удалите демо-пользователя.

6. Рекомендации по дальнейшей модификации

Плагин может быть расширен и адаптирован под конкретные задачи. Рассмотрим возможные направления:

  1. Более тонкая настройка запрещённых действий.
    В файле user_demo_admin.global.php можно добавить дополнительные параметры или URL-шаблоны для блокировки. Например, запретить доступ к определённым разделам, оставив только просмотр.
  2. Поддержка AJAX-запросов.
    Для полной защиты следует перехватывать также XMLHttpRequest (заголовок X-Requested-With) и блокировать POST-запросы, отправленные через AJAX.
  3. Разделение прав по модулям.
    Через вкладку «Права» уже можно точечно запретить чтение отдельных модулей. Можно добавить функцию автоматического скрытия запрещённых пунктов меню.
  4. Логирование действий демо-админа.
    Полезно записывать в лог все попытки записи, чтобы отслеживать подозрительную активность. Для этого в блокирующей части можно добавить вызов cot_log().
  5. Кастомизация сообщений.
    Заменить стандартное предупреждение на более информативное, например, с указанием причины и возможных действий.
  6. Интеграция с другими группами.
    Можно создать несколько демо-групп с разными наборами прав, используя тот же механизм.
  7. Добавить английский языковой файл
    Для мультиязычных сайтов.
  8. Добавить настройку «Разрешённые разделы админки»
    Вместо полного доступа можно реализовать whitelist разделов.
  9. Вынести список $dangerousActions в настройки плагина
    Чтобы администратор мог легко дополнять список опасных действий без правки кода.
  10. Добавить хук после создания демо-пользователя
    Например, usersaddsadmin.add.done или собственный хук для выполнения дополнительных действий.
  11. При создании пользователя автоматически добавлять его в группу Members
    Для более предсказуемого поведения на фронтенде (права наследуются от Members + Demo Admin).
  12. Сделать баннер «Вы находитесь в режиме демонстрации»
    Отображать предупреждение в шапке админки, чтобы демо-пользователь явно видел ограничения.
  13. Поддержка экстраполей при создании пользователя
    Если используются дополнительные поля пользователей, стоит добавить их обработку.

Чек-лист при доработке защиты от записи:

  • Сохранение конфигурации.
  • Установка/удаление плагинов.
  • Редактирование прав.
  • Работа с structure и page.

7. Выводы

Плагин User Demo Admin решает задачу предоставления ограниченного доступа к административной панели Cotonti с правами только на чтение. Благодаря комбинации стандартных прав (R на все объекты, A на админку) и дополнительной блокировки операций записи через глобальный хук, он обеспечивает приемлемый уровень безопасности для демонстрационных целей.

Тем не менее, из-за архитектурных особенностей Cotonti (многие админские скрипты проверяют лишь наличие права A) полностью гарантировать невозможность записи штатными средствами сложно. Поэтому плагин следует использовать с осторожностью и только для доверенных пользователей.

При необходимости плагин легко расширить, добавив дополнительные проверки, логирование или интеграцию с другими системами. Документация и структура кода позволяют разработчику быстро адаптировать его под свои нужды.

 

Купить User Demo Admin - безопасная демонстрация админ-панели Cotonti. по низким ценам. Интернет-магазин предлагает заказать User Demo Admin - безопасная демонстрация админ-панели Cotonti., просмотреть полное описание, детальные характеристики, фото товара и актуальные цены со скидками
С этим товаром, люди часто заказывают: Установка, интеграция и адаптация плагинов под Cotonti CMF.


Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
10 минут чтения
Владелец: Carbonate Sodium

You may have been looking for this for a long time.:

Модуль Market PRO v.5+ для Cotonti CMF.

webitproff
Продавец товара: webitproff
Витрина продавца

Оффлайн

Последняя авторизация: 13.10.2026 07:36

Обо мне кратко
Поддержка и разработка веб-проектов на CMF Cotonti: приватные мессенджеры через сайт, открытые и закрытые небольшие социальные сети, торговые площадки и маркетплейсы, портал биржи фриланса и услуг, каталоги товаров оптовых поставщиков, дропшиппинг-платформы, интернет-магазины и многое другое.
Смотреть разработки и скачать
Публичное портфолио моих работ и разработок
Телеграм для сообщений
@webitproff
Телеграм-канал
@s/aBuyFILE
Публичный профиль
  • Дата размещения 26.08.2026 15:11
  • Обновлено 13.09.2026 14:13

Обсуждение товара в Telegram

Витрина Market PRO

CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.