Создание ограниченного в правах Супервизора костыль для модуля Пользователей NetCat

Страница создания виджетов в Netcat находится в админке в меню "Инструменты", а у пользователя с правами "Редактор" отсутствуют все пункты меню, кроме "Сайт" и "Справка". Как же дать редакторам сайта возможность работать с виджетами? Выше Редактора только "Супервизор" с доступом к коду. Чем же провинились виджеты, для создания и редактирования которых не нужно лезть в код? Ответа на этот вопрос в данной статье не будет, потому что мы сами этого не знаем. Но мы нашли решение, как это исправить.

В чем проблема? Проблема в том, что владелец (или администратор) сайта в 99% случаев не должен лезть в текстовый код ни в коем случае. С другой стороны, в большом количестве случаев администратор должен и хочет получить доступ к служебным инструментам, коих в NetCat множество (например - редиректы, виджеты). Недостаток политики пользователей NetCat в том, то между Супервизором и Редактором сайта не хватает еще одного типа пользователя, который имеет доступ ко всему, кроме текстового программного кода.

Была у нас, помнится, статья про то, как вставлять элементы списков NetCat в текстовую страницу с помощью виджетов. А вот, можно сказать, прямое следствие той задачи, вытекающее из особенности политики разграничения прав в нашем любимом Netcat.

Чтобы решить проблему, мы сделаем небольшой костыль, который заключается в том, чтобы ставить куку и через нее закрывать доступ к нежелательным файлам через файл .htaccess. После этого редакторы/администраторы сайта не смогут случайно попортить код, пока не удалят куку. То есть никогда.

Итак, что мы делаем:

  • создаем группу Ограниченные Супервизоры, все пользователи которой будут иметь права "Супервизор";
  • помещаем в эту группу нужного Редактора. Это делается по необходимости, никакой автоматизации;
  • в корневой макет дизайна, в шаблоны навигации, пишем код:
// Если пользователь в группе Ограниченный Супервизор ставим ему Секретную Куку
if ($AUTH_USER_ID && in_array(6, $current_user[Permission_Group])) {
  setcookie("supervisor", "limited");
}
  • в директории /netcat/admin создаем файл htaccess, который при наличии Секретной Куки закрывает доступ к чувствительным для нас скриптам. Пользователю в ответ можно написать сообщение, например "У вас нет доступа к этому разделу, обратитесь к разработчикам". Для этого можно сделать редирект на служебную страницу. Например, так:
RewriteEngine on
RewriteCond %{HTTP_COOKIE} ^.*supervisor=limited.*$ [NC]
RewriteRule ^class/index.php$ supervisor_limited.php [NC,L]

Какие скрипты чувствительные? В первую очередь, все, относящиеся к разделу "Разработка":

/netcat/admin/class/
/netcat/admin/template/
/netcat/admin/field/system.php
/netcat/admin/widget/
/netcat/admin/classificator.php

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

update: учтите, что создав htaccess в директории /netcat/admin вы им "перекроете" корневой htaccess. Поэтому в него следует скопировать важные фрагменты.

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

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут