Pull to refresh

Даем право выбора доступа к странице с помощью Rules

Reading time 3 min
Views 6.7K
При создании новой странички или ноды на Drupal хотелось бы ограничить доступ к ней. Речь пойдет о наделении такой возможности с помощью модуля Rules.

Чекбоксы для задания доступа к странице на Drupal

Несколько слов о модуле Rules. Это своего рода отличное дополнение для CMS Drupal. Если в вашем проекте не хватает логики поведения при различных событиях — попробуйте этот модуль.

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

Чтобы сразу отсечь вопросы по аналогичным модулям, типа Content Access, уточню что стоит задача ограничить доступ к определенной странице. В том же Content Access есть возможность управлять доступом к типу «content». То есть, ограничивать доступ пользователям ко всему содержимому сайта или лишить определенным прав (редактирование, удаление).

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

Подготовка — установка модуля

Для начала нужно поставить модуль Rules. Процесс установки стандартный, как и для всех модулей Drupal, описывать его нет смысла. Все работы ведутся под версию Drupal 7 и следует скачивать модуль той же редакции. Потребуется установить модуль Entity. Ставим и активируем все модули. Убедимся, что они активны:

Активирование модулей

Настройка модуля Rules

Перейдем в настройки модуля Config->Process->Rules. В первой вкладке Rules (Правила), создадим новое правило.

Модуль Rules - настройка

Заполняем обязательные поля — название правила, машинное имя. Укажем событие на которое будет срабатывать наше правило — Content is viewed (Просмотр контента). Зададим тип контента — Страница. Сохраняем правило и временно его закрываем.

Добавление кастомного поля — Доступ к материалу

Чтобы добавить поле перейдем к разделу Structure -> Content type -> Page -> Manage fields. Добавим новое поле «Список(текст)» (List with text), зададим название «Доступ к материалу», машинное имя «field_view_access» и укажем выбор через checkbox (флажки). Жмем сохранить. Откроется окно настройки поля список. Можем здесь указать подсказку — справочный текст. Добавим значения в список:

Значения поля Доступ к материалу

Следует сделать это поле обязательным и значением по-умолчанию поставить первое значение «Видна всем». Это сэкономит вам время в будущем.

Значения поля Доступ к материалу

Сохраняем настройки поля и они уже появятся при редактировании «Страниц» сайта, правда не какой логики они не производят. Чтобы данное поле не выводилось в виде текста на страницах, щелкните в том же разделе редактирования типа материала «Страница» -> Управление отображением. Задайте скрытое отображение и никакого текста из нового поля не будет выводится.

Привязка кастомного поля к правилу

Итак, завершающий этап — привязка нашего поля и вывод информации пользователю.
Перейдем, снова, к редактированию нашего правила (см. пункт 1). Добавим кондиции в правило:

Настройка кондиций в Rules

1. NOT Text comparison — Говорит что содержимое поля не должно иметь указанное значение. Отрицания можно задавать чекбоксом в самом низу параметров кондиции. Указано поле [field-view-access], а значение 0. То есть, если на странице задан доступ только администраторам, то сработает данная кондиция.
2. AND - Логический оператор, добавляется кнопкой внизу, «Add and». Чтобы он работал, нужно перетащить нужные кондиции в дочерние пункты.
3. NOT User has role(s) - Когда у пользователя нет роли «developer» срабатывает и эта кондиция. Тут все просто.

Теперь что же будет происходить — Actions (Действия):

Настройка действий в Rules

1. Show a message on the site — Показываем сообщение с классом ошибка, текст указан в параметрах.
2. Page redirect — Простой 301-редирект, чтобы пользователь мог дальше путешествовать по сайту.

Сохраняем наше правило и радуемся.

Жду ваших комментариев.

Всем удачного освоения веб-пространства.
Tags:
Hubs:
+3
Comments 3
Comments Comments 3

Articles