Как реализовать управление доступом к узлу с помощью простого поля, используемого при создании узла?
У меня несколько ролей на сайте. Я использовал поле Ссылка на роль в узлах, чтобы выбрать, какая роль должна видеть узлы. Затем я установил Представления для отображения содержимого на основе ролей и поля ссылки на роль в узле.
Теперь я столкнулся с проблемой поиска. Поиск показывает все содержимое, и пользователи с разными ролями могут видеть все содержимое.
Я искал решение для установки доступа для каждого узла, но Доступ к контенту и Nodeaccess модули разрешают устанавливать доступ только после создания узла . И в этом случае пользователю необходимо установить доступ к двум полям: Поле ссылки на роль И вкладка Доступ к контенту/Nodeaccess. Нехорошо. Я не хочу создавать собственный тип контента для каждой роли.
Есть ли способ использовать поле ссылки на роль для установки контроля доступа к узлу?
Я установил модули доступа к контенту и Nodeaccess и попытался использовать модуль Правил для достижения этой цели, но, похоже, ни один из модули поддерживают правила.
Любая помощь/советы приветствуются.
2 answers
Вы можете заставить это работать, используя комбинацию модуля Правил и модуля Доступа к контенту , в то время как модуль правил автоматически (за кулисами) запустит необходимую логику. Сама логика полностью скрыта для пользователя (автора).
Вот еще несколько деталей, чтобы заставить его работать:
Начните с правила, аналогичного примеру, который я включил в свой ответ на " Как указать условие правил, связанное с выбором перечислить значения?".
-
В этом примере правила используется поле с именем
field_optionlist
с 3 возможными значениями A, B, C. В вашем случае вы должны использовать имя поля вашего Ссылка на роль поле, и вы также должны настроить возможные значения для этого поля. Еще несколько советов, которые помогут вам двигаться дальше:- Обязательно настройте имя поля этого поля (чтобы оно соответствовало уже имеющемуся у вас имени) ПЕРЕД импортом образца правила в пункте "1" выше (если не импорт правило потерпит неудачу).
- Адаптируйте условие Правил, связанное со значением "значение =
C
", к значениям, соответствующим вашему случаю, и сообщению, включенному в действие Правил.
QA-проверьте промежуточный результат после выполнения шага "2".: при создании узла должно отображаться соответствующее сообщение Drupal.
Используйте интеграцию модуля Доступа к контенту с модулем Правил, чтобы создать действие Правил, которое обновляет доступ к узел, аналогичный действию Правил, которое я включил в свое примерное правило, включенное в мой ответ на вопрос"Как отозвать доступ к редактированию у автора узла после публикации узла?". Фактические настройки, используемые для модуля доступа к контенту, конечно, должны совпадать с вашими настройками.
Вместо использования этих модулей вы могли бы просто создать поле таксономии и использовать Правила "Содержимое просматривается" и проверить наличие таксономии и текущей роли пользователя. Для представлений используйте отдельные представления для каждой роли.