У меня есть пользователь с правами на просмотр и редактирование определенного типа контента. Это дает право всем пользователям просматривать и редактировать все узлы этого типа. Но на самом деле я хочу создать для каждого пользователя уникальный узел, чтобы его мог просматривать и редактировать только этот пользователь. Как я могу сделать это в Drupal 7?
10
Ответы:
Используя существующий модуль, вы можете сделать это с помощью Content Access , который (при совместном использовании ACL ) позволяет устанавливать разрешения для доступа к узлу для каждого пользователя.
Это означает, что вам необходимо установить права доступа вручную для каждого узла.
Если вы вручную создаете узлы, а затем хотите быть уверены, что только пользователь, установленный в качестве владельца узла, может просматривать (и редактировать) его, то вы можете создать собственный модуль (что означает модуль, который используется для вашего сайта), и реализовать
hook_node_access()
следующим образом (код был написан для облегчения чтения):Используя эту реализацию ловушки, вам не нужно вручную редактировать права доступа, предоставленные для каждого узла того типа контента, который вы создаете. Смена владельца узла также будет проще, поскольку вам не нужно изменять права доступа для этого узла; код автоматически предоставит права на обновление и просмотр пользователю, указанному как владелец (или автор) узла.
источник
Вам не нужен специальный модуль или специальный код для этого. Просто создайте вручную эти узлы, назначьте соответствующих пользователей в качестве владельца (автора) узлов и установите разрешения для этого типа контента, чтобы редактировать только собственный контент (не редактировать контент такого типа), и все готово.
источник
То, о чем вы говорите, это контроль доступа к узлам Drupal, который является огромной темой.
Встроенная в ядро поддержка управления доступом к узлу довольно проста, и для управления доступом для просмотра узла по роли необходимо использовать какой-то модуль управления доступом к узлу. На Drupal.org есть страница со списком всех модулей доступа к узлам с кратким обзором каждого из них. Я предлагаю вам взглянуть на эту страницу и посмотреть, сможете ли вы найти подходящий модуль для контроля доступа.
Модуль Flexi Access , по-видимому, является модулем, наиболее близким к вашим требованиям, поскольку его основная функция - позволить вам контролировать доступ для отдельных пользователей, а не по роли или по таксономии.
Это небольшой модуль, который позволяет настраивать ACL (списки контроля доступа) для отдельных пользователей. Это в основном пользовательский интерфейс для модуля ACL , поэтому его также необходимо установить.
В нем отсутствуют некоторые функции более продвинутых модулей контроля доступа, таких как Content Access , но он активно поддерживается, и в его очереди ошибок в настоящее время нет открытых ошибок.
Раскрытие информации: я поддерживаю Flexi Access.
источник