Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Как скрыть ресурсы в дереве документов из админки менеджера Modx Revolution. Закрываем страницы от гостей Перенос нужных ресурсов в группу ресурсов «Admin»

Статья, в которой рассмотрим, как в MODX Revolution организована система прав доступа, а также некоторые типовые инструкции по настройки разрешений для пользователей.

Система прав доступа в MODX

MODX Revolution не позволяет напрямую назначать права пользователю. В этой системе данное действие осуществляется через группы пользователей .

Другими словами, для того чтобы пользователю предоставить некоторые права, необходимо:

  • создать группу и назначить ей нужные привилегии;
  • поместить одного или нескольких пользователей в эту группу.

Но нахождения пользователя в группе не означает то, что он получит все её привилегии. Права, которые получит пользователь, будут определяться с помощью отведённой ему в этой группе роли. Роль (ранг) пользователя в группе определяется с помощью числа от 0 до 9999. Это значение определяет, какие пользователь получит привилегии группы, а какие нет.

Другими словами роль – это некий механизм, который позволяет в пределах одной группы разным пользователям назначить разные права.

Разберём небольшой пример.


В этом примере:

  • Пользователь User1 принадлежит к группе Group1 . Он имеет те привилегии группы, роль которых больше 2000 .
  • Пользователь User2 состоит в 2 группах. Он имеет привилегии 2 групп. От первой группы (Group1 ) он имеет те привилегии, роль которых больше или равно 1000 . А от второй (Group2 ) - те привилегии, роль которых больше или равно 9999 .
  • Пользователь User3 находится в группе Group2 . Эта группа даёт ему те права, роль которых больше или равно 5000 .

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

Установление привилегий группе в MODX Revolution осуществляется с помощью политики доступа . Она (политика доступа) назначаются группе применительно к определённым сущностям MODX, а именно к контексту, группе ресурсов, категории элементов, источнику файлов и пространству имён. Кроме этого указывается ещё минимальная роль , которая нужна пользователю этой группы, чтобы иметь эти привилегии.

Рассмотрим изображение.

Привилегии, которые получают пользователи группы, в зависимости от того, какую роль каждый из них играет в ней

В этом примере:

  • Пользователь User1 (роль в группе Group1 - 2000 ) имеет все привилегии группы Group1 , роль которых больше или равно 2000. Т.е. это К1 , К2 и Г2 .
  • Пользователь User2 имеет самую высокую роль в группе (0) и, следовательно, все её привилегии (К1 , К2 , Г1 и Г2 ).
  • Пользователь User3 имеет в группе Group1 самую низкую роль (9999 ). В соответствии с ней он может совершать действия в системе, определённые в К2 и Г2 .

Политика доступа – это набор прав, предоставляемый пользователю для совершения действий на сайте, работающем под управлением CMS MODX Revolution.

Почему это реализовано именно так? Это связано с тем, что прав в MODX очень много и их более удобно назначать группами (другими словами с помощью политики доступа), а не по одному.

Например, политика доступа Load, List and View имеет следующий набор разрешений:

  • load (загружать объекты);
  • list (получать коллекцию объектов);
  • view (просмотр объектов).

Как создать свою политику доступа

При установке разрешений группе пользователей вы не ограничены только существующими (предустановленными) в системе MODX политиками. При необходимости вы можете создать новые. Создание политики в MODX осуществляется на основании шаблона политики доступа . Шаблон политики доступа – это сущность MODX Revolution, которая определяет максимальный список разрешений, доступный при создании политики доступа.

Таким образом, для того чтобы создать политику доступа с нужными разрешениями необходимо:

  1. Найти подходящий шаблон политики доступа (при необходимости отредактировать существующий или создать новый).
  2. Создать политику доступа, выбрав подходящий шаблон.
  3. Включить из всего списка разрешений, предлагаемый шаблоном, только те, которые вы хотите предоставить пользователям (если они будут иметь эту политику).
Как определяется набор доступных разрешений политики доступа

При создании политики доступа, всегда начинайте с назначения минимального количества прав, достаточных пользователю для совершения определённых действий в системе. При необходимости вы всегда сможете расширить предоставляемые пользователю разрешения.

Анонимный пользователь

В MODX Revolution любой не авторизированный посетитель сайта является анонимным и принадлежит к группе (аноним) . В этом легко убедится, если создать следующий сниппет, поместить его вызов в шаблон ресурса, а затем открыть страницу.

Php код сниппета GetUser:

user->get("username");

Вызов сниппета на странице:

[[!GetUser]]

Результат работы:

(anonymous)

Действия анонимных пользователей на сайте в MODX регулируются посредством настройки разрешений группы (аноним) . При необходимости вы можете этой группе дать дополнительные привилегии или ограничить их.

Типовые инструкции по настройке разрешений

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

  • ограничить доступ к определённым ресурсам для анонимных пользователей;
  • создать контент менеджера, которому необходимо дать доступ для работы с ресурсами в админке, а также возможность загружать картинки.

Ограничение доступа к определённым ресурсам

Рассмотрим пример, в котором ограничим доступ анонимным пользователям к определённым ресурсам (например, к личному кабинету, к странице «Изменения пароля» и т.п.). Доступ к этим ресурсам предоставим только зарегистрированным пользователям.

Чтобы это осуществить необходимо:

  1. Создать группу ресурсов Users (Содержимое -> Группы ресурсов -> кнопка «Создать группу ресурсов»). В появившейся форме ввести в поле «Имя» - Users и нажать на кнопку «Сохранить». Поместить в неё нужные ресурсы (доступ, к которым необходимо ограничить для анонимных посетителей).
  2. Создать группу пользователей Users (Иконка «Шестерёнка» -> Контроль доступа -> кнопка «Новая группа пользователей»). В открывшемся диалоговом окне ввести в поле «Имя» - Users , «Контексты» - web , «Политики бэкэнда» - (нет политики) .
  3. Перейти в режим редактирования группы (в контекстном меню Users выбрать пункт «Редактировать группу пользователей»).
  4. Открыть вкладку «Права доступа», а в ней «Доступ к группам ресурсам». Нажать на кнопку «Добавить группу ресурсов» и заполнить открывшуюся форму («Группа ресурсов» - Group , «Контекст» - (web) , Минимальная роль – Member (9999) , «Политика доступа» – Load, List and View ).

После этого, любой анонимный или другой пользователь (у которого нет прав) получит 404 ресурс (т.к. у него нет даже права load ), если он попытается открыть какую-ту страницу из этой группы.

Если же вы хотите анонимных пользователей, при открытии защищённых страниц, пересылать на какую-то другую (например, авторизации), то необходимо выполнить дополнительно ещё следующее (а именно дать право load для этой группы ресурсов):

  1. Открыть системные настройки (иконка «Шестерёнка» -> Системные настройки). Выбрать пространство имён «core», раздел «Сайт». Найти параметр unauthorized_page (Страница ошибки 403 «Доступ запрещен») и указать ему в качестве значение - id ресурса , содержащего форму «Авторизации».
  2. Перейти в режим редактирования группы (аноним) . В разделе «Доступ к группам ресурсам» (вкладка «Права доступа») добавить группу ресурсов Users и выставить ей необходимые права (в данном случае «Контекст» - (web) , Минимальная роль – Member (9999) , «Политика доступа» – Load Only ).
Настройка доступа к группе ресурсов Users для анонимных пользователей

Настройка прав для контент менеджера

В этом примере создадим группу «Managers», пользователи которой смогут в админке загружать изображения в директорию и работать с определёнными ресурсами.

Чтобы это осуществить можно, например, воспользоваться следующей инструкцией:

1. Создать новую политику доступа Manager с необходимыми правами:

  • Открыть страницу «Контроль доступа» (иконка «Шестерёнка» -> Контроль доступа) и перейти на вкладку «Политика доступа».
  • Сделать копию политики «Content Editor».
  • Отредактировать созданную копию, а именно изменить поле имя на Manager и установить галочки напротив прав directory_list, file_list, file_manager, file_remove, file_tree, file_upload. В итоге политика доступа Manager будет иметь 30 разрешений. Это необходимо сделать для того, чтобы пользователю предоставить права для работы с файлами.
  • Нажать на кнопку «Сохранить».
Форма настройки политики доступа Manager

2. Скрыть ресурсы, к которым менеджеры не должны иметь доступ в админке:

  • Открыть страницу «Группы ресурсов» и нажать на кнопку «Создать группу ресурсов».
  • В открывшейся форме ввести в «Имя» - ClosedForManagers , «Контексты» - mgr и отметить опцию «Автоматически дать доступ группе Administrator».
  • Кликнуть на кнопку «Сохранить».
  • Перетащить в созданную группу ресурсы, которые необходимо скрыть для менеджеров в админке.

3. Предоставить доступ к директории, в которую пользователь будет загружать картинки.

  • Открыть страницу «Источники файлов», кликнуть по кнопке «Создать новый источник файлов».
  • В открывшейся форме ввести в поле «Имя» текст Images , в «Описание» - Изображения , в «Тип источника файлов» - Файловая система .
  • Нажать на кнопку «Сохранить».
  • Отредактировать только что созданный источник файлов (правая кнопка мыши -> действие «Редактировать»).
  • Изменить значение параметров: basePath – assets/images/ , baseUrl – assets/images/ , allowedFileTypes - jpg, jpeg, png, gif .
  • Кликнуть по кнопке «Сохранить».
Настройка источника файлов Images

Источник файлов, не имеющий связанной с ним группы пользователей, будет доступен всем пользователем бэкэнда. Поэтому чтобы для пользователей группы Managers не показывались другие источники файлов, которые не связаны не с одной группы, их, например, можно назначить группе пользователей Administrator.

MODX - Связывание источника файлов Filesystem с группой Administrator

Система разграничения доступа MODX при помощи источника файлов позволяет различным пользователям задать определённые каталоги, к которым они будут иметь доступ, а также определить набор их привилегий в них. Другими словами - это система, которая с помощью которой, например, одним пользователям можно дать одни каталоги, а другим - другие.

4. Создать новую группу пользователей и назначить ей необходимые права.

  • Открыть страницу «Контроль доступа», перейти на вкладку «Группы пользователей & Пользователи», нажать на кнопку «Новая группа пользователей».
  • В открывшемся диалоговом окне заполнить следующие поля: «Имя» - Managers ; «Описание» - Менеджеры ; «Контексты» - web, mgr ; «Политика бэкэнда» - Manager .
  • Нажать на кнопку «Сохранить».
  • Перейти в режим редактирования только что созданной группы пользователей «Managers» (нажать правой кнопкой мыши на группе -> пункт в контекстном меню «Редактировать»).
  • Перейти на вкладку «Права доступа».
  • Открыть раздел «Доступ к контекстам». Доступ контексту web : «Минимальная роль» - Member (9999) ; Политика доступа – Load, List and View . Доступ к контексту mgr : «Минимальная роль» - Member (9999) , Политика доступа – Manager .
  • В разделе «Доступ к источнику файлов» добавим новую запись, имеющую следующие значения: «Источник» - Images ; «Минимальная роль» - Member (9999) , «Политика доступа» – Media Source Admin .
  • Нажать на кнопку «Сохранить»

5. Создать пользователя и добавить его в группу «Manager». В качестве значения роли установить ему число 9999 (Member). Данной роли ему будет достаточно, чтобы получить все разрешения данной группы. Это связано с тем, что для этой группы мы не назначали политики доступа для которых потребовалось бы роль больше чем 9999.

Добавление пользователя в группу Manager (роль Member)

Одной из первых проблем с которыми я столкнулся при переходе на ModX Revolution, я не знал, как вывести имя категории (родителя) в анонсе статьи на главной странице. Несмотря на усилия, гугл давал весьма скудную информацию и по большей части по предыдущей ветке Evo. Так или иначе решение проблемы есть и сегодня я расскажу Вам как вывести имя категории на главной странице сайта в Modx Revolution .

Что такое Ресурс в ModX Revolution?

Под ресурсом в CMS/CMF ModX понимаются любые страницы созданные в админке, это могут быть как обычные страницы на сайте (документы), так и обычные веб-ссылки, символические ссылки, статичный элемент или файлы. По умолчанию под ресурсом подразумевается документ, он же и является страницей на вашем интернет-сайте.

Ресурс может быть контейнером и выступать в роли каталога включая в себя группу других ресурсов. Пример:

  • Создание сайтов (Категория)
  • — Как создать сайт с нуля? (статья в блоге)
  • — Как зарегистрировать домен? (статья в блоге)
  • Как вывести имя категории в ModX? (статья в блоге)

Выводим имя категории в котором находится статья в ModX Revolution

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

Для начала мы должны установить то, с помощью чего будем выводить, а именно пакет pdoTools, если он у Вас не установлен, то бегом заходим в установщик пакетов и ставим его, он включается множество сниппетов, которые нам помогут и именно с помощью него я вывожу все записи в блоге. Нам понадобится один из сниппетов которые входят в сборку pdoTools, а именно pdoField который выводит любое поле указанного ресурса или его родителя, включая TV параметры.

После установки пакета, открывает шаблон который отвечает за вывод анонса статьи и размещаем простой код

[]`&field=`pagetitle`]]

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

Добрый день, дорогие читатели. Сегодня я расскажу как скрыть системные или не нужные для менеджера ресурсы из дерева документа на сайте под управление Modx Revolution (текущая версия 2.4.2 ). Для начала поймем для чего нам это нужно. В дереве документы у нас есть системные ресурсы, которые мы не показываем в меню. Это, скажем, sitemap, результаты поиска, 404 страница, Сайт не доступен и многие многие другие. И очень не хотелось бы, что обычный менеджер видел эти ресурсы в дереве документов. И в Modx Revolution предусмотрено это - их можно просто скрыть. Как это делается, я сейчас подробно опишу. В качестве примера я приведу один из моих сайтов. Его дерево документов выглядит так:

Мы видим, что здесь имеются системные ресурсы, которые не отображаются в меню: Sitemap, Корзина товаров, Результаты поиска и Оформление заказа. Нам нужно скрыть эти ресурсы от слишком любопытного менеджера, чтобы он там ничего не напортачил.

Создаем группу ресурсов

​Заходим в Содержимое/Группы ресурсов

и нажимаем на кнопку «Создать группу ресурсов»

и создаем группу «Admin» (вы можете назвать по другому)

Никакие галочки не выставляем. Жмем кнопку «Сохранить»

Перенос нужных ресурсов в группу ресурсов «Admin»

Даем доступ к группе ресурсов «Admin» только группе пользователей «Administrator»

Для это заходим в «Контроль доступа»

Кликаем правой кнопкой мыши по группе пользователей «Administrator» и жмем «редактировать группу пользователей»

Идем на вкладку «Права доступа»

Здесь идем во вкладку «Доступы к группам ресурсов»

И жмем кнопку «Добавить группу ресурсов»

  • Группа ресурсов: «Admin»
  • Контекст: Manager (mgr)
  • Минимальная роль: Member-9999
  • Политика доступа: Resource

Обновляем админку менеджера и видим, что ресурсы, которые мы добавили в группу ресурсов «Admin» исчезли.

Конечно при условии, если вы создавали админку менеджера по этой .

В следущий раз когда Вам нужно будет скрыть како-либо ресурс, Вы просто можете зайти в этот ресурс, нажать на «Группы пользователей» и отметить галочку напротив «Admin»

На этом у меня все, успехов Вам в освоении Modx Revolution и до новых уроков. Надеюсь помог. Добро.

Здесь я расскажу о том, как сделать некоторые страницы сайта закрытыми для неавторизованных пользователей, т.е. гостей. Это бывает нужно, когда необходимо сделать приватные разделы. Итак начнем.

Группа пользователей

Создаем группу пользователей, которым мы дадим доступ к закрытым страницам. Для этого открываем системное меню (в правом верхнем уголу) и выбираем пункт «Контроль доступа».

Нажимаем кнопку Новая группа пользователей.

Дальше нужно указать у только что созданной группы права доступа к контексту Web - Load, List and View .

Группа ресурсов

Теперь нужно создать группу ресурсов, в которую будут входить страницы для закрытого доступа. В верхнем меню админки выбираем пункт Содержимое > Группы ресурсов . В открывшемся окне нажимаем кнопку Создать группу ресурсов. Заполняем поля в диалоге группы ресурсов.

Нажимаем кнопку Сохранить. Уже здесь мы можем добавить приватные страницы в группу ресурсов - из правой части мышкой переносим нужную страницу в группу ресурсов слева. Но настройка еще не закончена. Теперь нам нужно отредактировать права доступа к группе ресурсов, потому что MODX по-умолчанию дает неправильные права. Идем опять в «Контроль доступа» и меняем доступ к группе ресурсов у групп "(аноним)" и «Users» на Load only и Load, List and View .

Зачем анонимам давать доступ к закрытым ресурсам? Если не дать, то MODX не сможет загрузить страницу и выдаст код 404 «не найдено». А так MODX загрузит страницу, проверит права и отдаст 403 «доступ запрещен». Кстати, желательно в системной настройке unauthorized_page указать id страницы, на которую MODX будет перенаправлять не прошедших проверку пользователей.

Добавить любую страницу в группу ресурсов можно на странице самого ресурса на вкладке «Группы ресурсов» отметив соответствующий чекбокс.

На этом настройка закончена. Теперь, когда гость попытается открыть страницу для авторизованных пользователей, он будет перенаправлен на страницу, которую вы указали в системных настройках в ключе unauthorized_page .

21 декабря 2015, 12:28 0 5204

В MODX есть интересная возможность - вы можете менять внешний вид формы редактирования ресурсов практически как вам хочется. Причем вы можете сделать разные формы для разных групп пользователей, и даже для разных ресурсов. Можно выбирать разные профили форм для данного ресурса в зависимости от его шаблона, родителя или других свойств.

И для этого нам не придется писать ни одной строчки кода!

Давайте, посмотрим, что, например, можно сделать с формами :

Во первых, уберем лишние пункты верхнего меню в один общий пункт - «Разработчику». Для этого заходим в раздел «Система» -> «Действия», создаем в корне новый пункт меню и перетаскиваем все ненужные пункты туда:

Дальше заходим в раздел «Безопасность» -> «Настройка форм» и создаем новый профиль, например, «Контент-менеджер». Потом нажимаем на нем правой кнопкой мыши и выбираем «Редактировать», переходим на вкладку «Группы пользователей» и добавляем группу, к которой будут применены новые правила.

Далее мы создаем новый набор правил. Их два вида - один для формы создания ресурса, второй - для формы его редактирования (create и update, соответственно). Этих правил может быть несколько - хоть по правилу для каждого ресурса.

После того, как правило будет создано, вы увидите страницу настройки - там три вкладки: Информация о наборе правил, Регионы, Дополнительные поля.

На первой вкладке перечислены стандартные поля ресурса. Их можно отключать или переименовывать. Регионы - это вкладки у ресурса. Вы можете создать новый регион и поместить туда некоторые ТВ-параметры, тогда они будут у ресурса не на вкладке «Дополнительные поля», а на новой вкладе - которую вы укажете. Здесь же можно отключать стандартные вкладки, например, «Группы ресурсов».

На третьей вкладке вы указываете расположение того или иного ТВ-параметра.

Я сделал небольшую шпаргалку по стандартным регионам:



Итак, давайте сразу уберем для пользователя все вкладки, кроме первой. Убираем галочки у регионов: modx-page-settings, modx-panel-resource-tv, modx-resource-access-permissions. Дальше - из стандартных полей оставим только pagetitle и alias. У остальных галочки убираем. Указываем новое название для поля pagetitle: «Заголовок новости» и alias: «Адрес страницы».

После этого переходим на вкладку «Дополнительные поля» и указываем, что ТВ-параметры должны находиться в той или иной области формы (в соответствии со шпаргалкой).

Осталось указать, для каких ресурсов действует это правило - в пункте «Шаблон» указваем, к ресурсам с каким шаблонам применять правило. Если правило для всех шаблонов, то ничего не указываем. И еще есть два пункта: «Ограничивающее поле» и «Ограничивающее значение». Здесь можно указывать остальные поля.

Давайте, укажем, что это правило относится к ресурсам, находящимся в «Новостях» - в пункте «Ограничивающее поле» пишем parent , а в «Ограничивающее значение» id ресурса «Новости», например, 22 .

Похожие публикации