Заготовка политик доступа для разных групп пользователей

Интро


Это моя первая заметка, посему просьба не ругать. По этой же причине не могу написать данную заметку в любой другой раздел. Если кто-то её перенесет, я буду не против. Данный step-by-step гайд больше подойдет либо совсем новичкам, либо тем кто хочет познакомиться с правами в MODX поближе.

Работаю с MODX не долго, около 2 месяцев. Уже на втором проекте у меня возникла задача жесткого разграничения прав, несколько иерархий контент-менеджеров, модераторов, авторов, администраторов и т.д. Все это меня заставило окунуться в омут настроек политик доступа для разных групп пользователей. Готового гайда я не нашел, так что пришлось разбираться в каждой настройке и смотреть на что она влияет, чтобы не обрезать нужные права определенным группам. Плохо я искал, инет полон гайдов подобной тематики, вот хороший гайд. К тому же я хочу изучить MODX и работать именно на нем и считаю что я должен не просто прийти и использовать то что создали другие разработчики, но и внести свой (пусть и небольшой вклад). Но об этом в конце статьи. Это небольшое интро в мою степь, чтобы у людей не возникало вопросов «кто этот парень чтобы меня учить»? Я не учу, а лишь делюсь своим, пусть и опять же, небольшим, но опытом.


Политика доступа


Меньше слов — больше дела.
  1. Заходим в админку MODX
  2. Наводим на шестеренку в правом верхнем углу
  3. В выпадающем списке выбираем раздел «Контроль доступа»
  4. Выбираем вкладку «Политики доступа»
Тут мы можем увидеть различные политики доступа, они устанавливаются вместе с MODX на основе следующей вкладки «Шаблоны политик доступа». В шаблоны политик доступа можно вносить свои разрешения, а в самих политиках либо включать их, либо выключать. Но лучше не изменять дефолтные шаблоны, а создавать свои. Это так к слову. На своем первом сайте я настраивал свои политики доступа путем копирования политики доступа «Administrators».



Далее шло утомительное включение и выключение нужных опций разрешений. Выжпрограммисты как известно люди ленивые. Я конечно не считаю себя программистом, но тоже ленивый, уже на следующем сайте я решил сварганить свой собственный XML файл с настройками. В итоге у меня сейчас есть 6 видов файлов, для 6-ти разных групп пользователей с абсолютно разными настройками. Они создаются путем импорта во вкладке «Политика доступа»



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

gist.github.com/iWatchYouFromAfar/4a68691789b1db1f5d9f6d63c3d6ff85

После того как вы импортируете файл, у вас появится новая политика доступа — Content Managers.



Ну а далее просто необходимо её применить к группе пользователей:

  1. Открываем вкладку «Группа пользователей & пользователи»
  2. Создаем группу Content Managers


  1. После в этой же вкладке ПКМ на нашу новосозданную группу и редактировать
  2. Указываем у двух контекстов нашу политику доступа для контент-менеджеров


  1. Дальше создаем нового пользователя или уже существующего необходимо добавить в группу Content Managers.
  2. Перезагрузить права
  3. Очистить кеш
Админка нашего контент-менеджера будет выглядеть вот так:



Но шаблон сделать да права выдать, это пол дела. В MODX есть 174 опции разрешений и все они не структурированы. Они отвечают за разные элементы и блоки админки, но находятся в одной куче. Плюс не все они интуитивно понятны и например у меня возникли некоторые вопросы по тем или иным опциям. Если не ошибаюсь, разобрался в 172 из них. Собственно в самом шаблоне по ссылке выше я в каждой опции указал много-много комментариев.

Траблы после сомнительных разработчиков


На одном из сайтов на MODX над которым я работал, предыдущий разработчик просто отключил шестеренку у всех пользователей, кроме Администратора по умолчанию. В итоге да, в админке выпадающего списка не видно, но если знать путь, можно перейти в любую настройку и пробовать там нагадить. По этой причине мой шаблон не просто убирает выпадашку, а запрещает контент-менеджеру вообще соваться в эти пункты. Доступ в итоге будет примерно такой:

------------Левый блок------------
Ресурсы
— Website контекст (+)
Элементы
— Шаблоны (-)
— Дополнительные поля (-)
— Чанки (-)
— Сниппеты (-)
— Плагины (-)
— Категории (-)
Файлы

------------Верхний блок------------
Содержимое
— Новый ресурс (+)
— Перейти на сайт (+)
— Импорт HTML (+)
— Импорт ресурсов (+)
— Группы ресурсов (-)
— Типы содержимого (-)
Медиа
— Источники файлов (-)
Приложение
— Установщик(-)
Управление
— Пользователи (-)
— Очистить кэш (+)
— Снять блокировки (-)
— Перезагрузить права доступа (-)
— Завершить все сеансы (-)
— Отчеты (+)
— Расписание сайта (+)
— Журнал системы управления (-)
— Журнал ошибок (-)
— Информация о системе (-)

------------Правый выпадающий блок------------
— Системные настройки (-)
— Настройка форм (-)
— Панели (-)
— Контексты (-)
— Меню (-)
— Контроль доступа (-)
— Наборы параметров (-)
— Управление словарями (-)
— Простанства имен (-)

Возвращаемся к опциям


174 опции и все в одной куче. Я например перфекционист, не в плане там цветов и прочих вещей, на которые как обычно обращают внимание. А именно в плане структуры и структуризации. Ну и как я сказал в самом начале, нужно не просто брать, но и что-то отдавать. На modx.docs есть раздел Система. Если пользователи и администраторы одобрят, я хотел бы навести порядок в этих 174 пунктах, добавив в доки раздел Разрешения / Permissions. В котором разделю опции разрешений MODX на 5 основных блоков:

  1. Системные разрешения
  2. Разрешения левого меню
  3. Разрешения верхнего меню
  4. Разрешения правого выпадающего списка
  5. Разрешения контента
И соответственно по этим блокам разбросаю 174 опции, которые в свою очередь так же будут структурированы в категории (ресурсы, чанки, сниппеты, наборы инструментов и т.д.) с детальным описанием. Я думаю что новичкам это будет полезно.

Эндшпиль


  1. Есть дополнение modAccessManager, которое решает вопрос ограничение доступа, тот кто не захочет читать мою простыню, проще покупайте данный компонент и всех делов. Тут вопрос подхода, один купит готовое, второму будет интересно вникнуть в сам процесс разграничения прав.
  2. Мой гайд не решает вопрос настройки прав Групп ресурсов или источников файла. Цель моей простыни все таки не в этом.
Отдельно хочу сказать спасибо:
Василию Наумкину за чудесный способ быстро и бесплатно разворачивать тестовые сайты на modhost!
Сергею Шлокову за подсказки в разборе опций create,view,remove,save. Хотя с этими опциями еще тоже не все до конца понятно.
Ивану Климчуку, за то что нашел время ответить на вопросы в телеграме, касательно некоторых опций.
iWatchYouFromAfar
09 октября 2018, 10:53
modx.pro
11
2 434
+4
Поблагодарить автора Отправить деньги

Комментарии: 1

Баха Волков
09 октября 2018, 11:31
2
+1
Паша, молодец!) Новичкам точно будет полезно!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1