Всем привет! Хоть я последнее время мало уделяю внимания MODX, но уж очень мне понравилась идея Владимира. И я решил добавить такой функционал в свой пакет adminTools. Реализация достаточно простая — без таблиц, интерфейсов и т.п. Только системная настройка, в которой определяются права.

Для пакетов в MODX определены следующие действия:

  • Установка (install)
  • Переустановка (reinstall)
  • Деинсталляция (uninstall)
  • Обновление (update)
  • Удаление (remove)
  • Проверить обновление (checkupdate)
  • Посмотреть детали (details)

Любое из этих действий можно запретить. Также можно запретить сразу все действия (об этом ниже). Для управления этим функционалом добавлена системная настройка admintools_package_actions. В ней нужно указать права для пакетов в формате javascript объекта:

{package1:{action1:false, action2:"Сообщение для action2.", message:"Сообщение по-умолчанию."},
package2:{...}}

Чтобы запретить действие, можно указать или false или сообщение. В первом случае сообщение будет искаться в ключе message. Этот ключ пригодится, если нужно вывести одно сообщение для всех действий. Таким образом, для каждого действия можно указать своё сообщение или для всех одно общее или вперемешку — для некоторых определить, для остальных общее.

Примеры

1. Запретить удаление пакета

{Ace:{remove:"Удаление запрещено!"}}
// или так
{Ace:{remove:false}}  // Выведется дефолтное сообщение "Доступ запрещён!".
// или так
{Ace:{remove:false, message:"Действие запрещено!"}}

2. Запретить установку определённого пакета

{Ace:{install:"Данный пакет устанавливать запрещено по причине несовместимости!"}}

3. Запретить все действия для пакета. Для этого добавлен специальный ключ all.

{Ace:{all:"Все действия с этим пакетом запрещены!"}}

4. Разрешить только некоторые действия для пакета.

{Ace:{details:true, all:"Это действие запрещено!"}}
// эквивалентно
{Ace:{details:true, all:false, message:"Это действие запрещено!"}}

Названия пакетов регистрозависимые, поэтому будьте внимательны.

В общем, пробуйте, благодарите или ругайте.

27 июля 2017, 11:04   468     0

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.