MODX ACL: настройка прав доступа для контент-менеджеров

MODX ACL Курс

Самый большой страх разработчика — сдать сайт клиенту, а через день услышать: «Я там что-то нажал, и всё пропало». Чтобы этого не случилось, мы настроим права доступа. Мы создадим роль «Редактор блога», который увидит только то, что ему положено.

Задача

Нам нужно создать пользователя, который:

  • Имеет доступ в админку.
  • Может создавать, редактировать и удалять статьи (ресурсы).
  • Может загружать картинки (через TV-поля), но не видит системные файлы.
  • НЕ видит дерево элементов (чанки, шаблоны — чтобы не сломал верстку).
  • НЕ имеет доступа к системным настройкам.

Шаг 1. Создаем политику доступа (Policy)

Переход в Контроль доступа, на вкладку Политики доступа

Политика — это список того, что можно делать (галочки «создать», «удалить», «сохранить»). Мы не будем создавать её с нуля, а скопируем готовую.

  1. Идем в «Человечек с замком» -> Контроль доступа.
  2. Вкладка Политики доступа.
  3. Находим стандартную политику Content Editor. Правой кнопкой мыши -> Копировать.
    Копируем политику Content Editor
  4. Щелкаем по созданной политике правой кнопкой мыши и выбираем редактировать. Называем её: Blog Manager Policy и сохраняем.
  5. Далле нужно донастроить права (включить / отключить галки).

Что нужно ВКЛЮЧИТЬ (Галочки):

Чтобы менеджер мог писать статьи и, главное, загружать картинки в TV, проверьте наличие этих прав:

  • file_manager — разрешает использование файлового менеджера (без этого окно загрузки не откроется).
  • file_list, file_upload, file_view — просмотр и загрузка файлов.
  • directory_list — просмотр папок.
  • source_view — просмотр медиа-источников (критично для картинок!).
  • view_tv — видеть вкладку «Дополнительные поля» (TV). (Обратите внимание: права save_tv давать НЕ НАДО, иначе менеджер сможет менять настройки самого поля, а не его значение).
  • new_document, edit_document, save_document, publish_document — база для работы со статьями.

Что нужно ОТКЛЮЧИТЬ (Убрать галочки):

Скрываем все технические разделы, чтобы интерфейс был чистым и безопасным:

  • element_tree — скрывает вкладку «Элементы» (чанки, шаблоны, плагины).
  • file_tree — скрывает вкладку «Файлы» в левом меню (файловый менеджер при этом будет работать в окнах выбора картинок).
  • settings — скрывает системные настройки.
  • access_permissions — запрещает управление правами доступа (чтобы не создал себе админа).
  • menu_tools, menu_system, menu_support — скрываем лишние пункты верхнего меню.

Сохраняем политику.

Сохраняем.

Шаг 2. Создаем Группу пользователей

Права в MODX выдаются не конкретному человеку, а Группе.

Создаем группу пользователей

  1. В том же разделе «Контроль доступа» переходим на вкладку Группы пользователей.
  2. Нажимаем «Создать группу пользователей».
  3. Название: Content Managers.
  4. В поле «Контексты» (справа) пока ничего не трогаем, сохраняем.

Шаг 3. Связываем группу и политику (магия ACL)

Теперь нам нужно сказать MODX: «Эта группа имеет вот эти права в админке».

  1. Нажмите правой кнопкой мыши на новую группу Content Managers -> Редактировать.
    Редактирование группы пользователя
  2. Перейдите на вкладку Права доступа -> Контексты.
  3. Нажмите «Добавить контекст».

Добавиление контекста

Нам нужно добавить две записи:

Запись А (доступ к интерфейсу админки)

  • Контекст: mgr (manager)
  • Минимальная роль: Member - 9999
  • Политика доступа: Blog Manager Policy (та, которую мы создали на шаге 1).

Запись Б (доступ к веб-ресурсам)

  • Контекст: web (или как называется ваш основной контекст)
  • Минимальная роль: Member - 9999
  • Политика доступа: Load, List and View (стандартная политика, разрешающая видеть дерево ресурсов).

Сохраните группу.

Сохраняем политики

Шаг 4. Ограничиваем доступ к конкретным папкам (опционально)

Если вы хотите, чтобы менеджер видел только папку «Блог», а не «Главная» или «Контакты»:

  1. Идем в Ресурсы -> Группы ресурсов.
  2. Создаем группу ресурсов Blog Posts.
  3. Перетаскиваем мышкой нужные папки (раздел Блог) в эту группу.
  4. Возвращаемся в редактирование Группы пользователей (Content Managers).
  5. Вкладка Доступ к группам ресурсов.
  6. Добавляем связь: Группа ресурсов Blog Posts — Политика Resource — Контекст web.

Важно: Чтобы это сработало на 100%, у админа (вас) должен быть доступ ко всем ресурсам, иначе скрытые ресурсы скроются и от вас. Но для простого блога часто достаточно шагов 1-3.

Шаг 5. Создаем пользователя

  1. Идем в Управление (человечек с замком) -> Пользователи
    Переходим во вкладку пользователи
  2. На открывшейся странице жмем по кнопке «Создать«.
    Создать пользователя
  3. Заполняем обязательные поля: Имя: editor, E-mail, пароль (либо ставим сгенерировать), ставим галку активный и переходим во вкладку Права доступа.
    Создаем пользователя
  4. Нажимаем «Добавить группу» и выбираем Content Managers. Роль оставляем Member и Сохраняем.
    Распределяем права пользователю и сохраняем

Шаг 6. Проверка и медиа-источники

Откройте другой браузер (или режим Инкогнито) и войдите под новым пользователем.

Что вы увидите: дерево ресурсов. Возможность редактировать текст.
Что пропало: вкладки «Элементы» и «Файлы». Системные настройки.

Лайфхак: Как дать доступ к картинкам?

Мы отключили file_tree, поэтому менеджер не видит файлы. Но картинки в статьи вставлять надо! Для этого используются Медиа-источники (Media Sources).

  1. Идем (под админом) в Медиа -> Источники файлов.
  2. Создаем новый: images (если вы не делали дз).
  3. Указываем пути (basePath/baseUrl): img/.
  4. Во вкладке Права доступа жмем по кнопке Добавить группу пользователей. настройках  идем на вкладку Доступ к источникам файлов.
  5. В сплывающем окне заполняем: Группа пользователей Content Managers, Минимальная роль Member - 9999, Политика Media Source User (или Admin).
  6. Добавляем права на источник

А вот доступ к источнику Filesystem (корень сайта) — нужно закрыть. Идем в источник и задаем ему следующие права:

Закрываем доступ к Filesystem

Теперь при загрузке картинки менеджер попадет сразу в папку блога и не сможет удалить ничего важного выше уровнем.

Оцените статью
MODX 3
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.