Создание ограниченного в правах Супервизора костыль для модуля Пользователей 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: лучше никогда не ставьте подобных костылей в реальной жизни. Эта статья -- просто иллюстрация того, как можно вывернуться. В действительности всегда лучше найти какое-нибудь другое, организационное решение.

Блог

Как отресайзить картинки батчем?

Все фотографии, которые вы собираетесь отресайзить, должны быть в одной директории, скажем «uploads». Внутри нее можно сохранить любую структуру директорий. Мы научимся создавать копию этой директории, внутри которой все картинки будут отресайзены, причем только в сторону уменьшения разрешения.

далее

Tilda Module: интеграция NetCat с Tilda.cc

Представляем нашу новую разработку, модуль интеграции CMS NetCat с платформой Tilda.cc. Модуль дает возможностью полуавтоматически размещать классные лендинги прямо в структуре вашего сайта!

далее

Как оптимально заархивировать файлы, чтобы распаковать их средствами ISPmanager?

В определенных случаях файлы выгоднее заливать на веб-сервер в виде архива. Во-первых, если данные хорошо сжимаются, или же просто файлов очень много, это сократит время заливки. Во-вторых, в любом случае это обезопасит данные от случайного повреждения, так как при распаковке архива происходит проверка его целостности с помощью контрольной суммы (CRC). Однако, не вполне понятно, какой формат архива и тип сжатия выбирать? Мы провели небольшое экспериментальное исследование на эту тему.

далее

Как расшифровать бэкапы, зашифрованные ISPmanager?

В ISPmanager версии 5.52.0 и старше, реализована новая система резервного копирования, построенная на основе некоей ISPtar. И работает она... своеобразно. Попробуем разобраться, как именно.

далее

Весь блог тут