Настройка правил для блокировки доступа к материалам в Drupal 7

Советы по защите данных и ограничению нежелательного доступа к важному содержимому с помощью Rules.

06.05.2013
4 комментария
0 мин.

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

Итак, приступим.

Шаг 1. Создаем новое правило (Rule).

Шаг 2. Назовем его «Тикет: Блокировка от просмотра» (ticket_block_view). Также укажем реакцию на событие «Content is viewed».

Шаг 3. В «Conditions» добавляем новый «User has role». В «Data selector» указываем «site:current-user», в списке ролей выбираем «Administrator» (и еще те, которые будут иметь доступ ко всем тикетам, например сотрудники), а в самом низу указываем «Negate». Тем самым мы говорим правилу, что оно сработает когда текущий пользователь не имеет роли «Administrator».

Шаг 4. Добавляем еще один «Conditions» «Data comparsion». В «Data selector» выбираем «node:author» и жмем продолжить. На следующем этапе в «Data selector» выбираем «site:current-user» и снова ставим галочку «Negate». Сохраняем.

Шаг 5. Добавляем «Condition» «Content is of type» и в «Content types» выбираем «Тикет».

Шаг 6. Последним мы добавим «Action» «Page redirect» и в «Value» укажем «user/login».

А теперь обо всем по порядку, чтобы разъяснить что происходит.

Когда кто-либо заходит на страницу, которая является типом содержимого «Тикет», мы проверяем пользователя на право доступа к нему. В нашем случае мы указали, что если пользователь не администратор, а также не автор данного содержимого ( тикета), то он будет перенаправлен по адресу «user/login».

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

Прикрепленные файлы
Экспорт правила — block_node_rule.txt, 730 байт
Drupal
Drupal 7
Rules

Комментарии

Олег   пт, 06/09/2013 - 12:55

Почему это правило запрещает заходить на вьюху с нодами типа - тикет?

Niklan   пт, 06/09/2013 - 13:44

Потомучто это правило блокирует доступ к нодам типа - тикет всем, кто не является её автором или администратором сайта. Потомучто стоит "Content is viewed". Перед просмотром происходит проверка и вышибает если не подходит условиям. Если же человек автор этих материалов или админ и при этом запрещает вход, стоит искать ошибки в других своих действиях, либо попробовать проверить правило.

AlianGrey   вт, 18/02/2020 - 13:01

Благодарю за пост. Всё просто, понятно и очень лёгкий стиль у сайта, приятно читать.