Я использую Drupal 7, и я создал новый тип контента под названием «электронная книга», и я создал новую роль под названием «MonthlySubscriber». Я хочу, чтобы только пользователи с «MonthlySubscriber» могли просматривать узлы «eBook». Когда я посмотрел на параметры разрешений для роли, я увидел флажки, которые позволяют создавать, редактировать и удалять узлы этого типа контента, но флажки для просмотра узлов отсутствуют.
Как ограничить пользователей, которые могут просматривать узлы «eBook», только пользователями с ролью «MonthlySubscriber»?
Вот простой способ защитить страницы узла (узел / NID) от непривилегированных пользователей.
источник
hook_node_access
не будет работать с чем-либо, что «перечисляет» узлы, например, с представлением. Таким образом, вы можете ограничить доступ к представлениюhook_node_access
, но запрос View или пользовательский узел может по-прежнему показывать этот узел пользователю.hook_node_access
более полезен для редакционного контроля, для управления операциями создания / обновления / удаленияДоступ к содержимому не работал для моей установки Drupal 7, поэтому вместо этого я использовал Node View Permissions .
источник
Для Drupal 7 попробуйте это: Доступ по сроку
источник
Решение hook_menu_alter, опубликованное выше ya.teck, действительно работает, но конфликтует со стандартным hook_node_access в его имени функции. hook_menu_alter в этом случае не требуется, и поэтому ответ, опубликованный Денисом выше, на мой взгляд, более точный и правильный. Изменение menu_item, как это делается, - это первый ссылочный пример, который может быть перенесен другим модулем дальше по трубе.
источник
Я использовал фрагмент кода, найденный в документации API- интерфейса D7 для ловушки hook_node_access .
Этот код предоставит доступ к просмотру содержимого "электронных книг" пользователям, которые имеют разрешение на "просмотр электронных книг".
Вам нужно новое разрешение для управления доступом, реализуя hook_permission ().
Благодаря реализации hook_node_access () Drupal может предоставить или запретить доступ к узлу.
С другими разрешениями (редактировать, удалять и т. Д.) Можно обращаться через обычные разрешения Drupal.
При желании вы можете удалить контент из обзора администратора, реализовав hook_query_TAG_NAME_alter.
источник
Я предпочитаю использовать модуль Node View Permissions . Это проще, чем модуль Content Access.
Как и в D6, он добавляет разрешения «Просмотр любого контента» и «Просмотр собственного контента» для любого типа контента, который вы выберете.
Шаги, чтобы следовать:
/admin/config/content/node-view-permissions
и выберите типы контента, доступ к которым вы хотите ограничить.Затем перейдите
/admin/people/permissions#module-node_view_permissions
и выберите роли, которые вы хотите просматривать. Сохранить разрешения.Выполнено!
источник