Как дать конкретному пользователю права на редактирование для определенного узла?

Как дать конкретному пользователю права на редактирование для определенного узла?

У меня есть роль пользователя с именем "Студент". Эту роль играют несколько пользователей, только несколько из них могут редактировать узел. Как я могу это понять?

5 ответов

Решение

Я постараюсь охватить несколько вариантов использования, как я их решу:

  1. Если все члены категории пользователей могут редактировать любой узел определенного типа
    • Создайте новую роль для этого подмножества пользователей ("Супер Студенты", как предложил Эмир) и предоставьте им разрешения "Редактировать содержимое типа" через основную систему разрешений Drupal (модуль доступа к узлам не требуется)
  2. Если все члены категории пользователей могут редактировать определенные узлы
    • Создайте новую роль для этого подмножества пользователей и предоставьте им разрешения на редактирование для определенных узлов (требуются модули доступа к узлам, такие как доступ к узлам или доступ к содержимому). Это также потребует, чтобы кто-то имел разрешения (и время) для предоставления доступа к роли при создании нового узла.
  3. Некоторые пользователи могут редактировать некоторые узлы; нет "элитной" группы пользователей, которые могут редактировать все узлы, и не все участники могут редактировать одни и те же узлы
    • Для этого потребуется модуль доступа к узлу, такой как доступ к узлу или доступ к содержимому с ACL. Также должны быть пользователи-администраторы, которые имеют право предоставлять другим пользователям доступ для редактирования узлов.
  4. Разрешить пользователям предоставлять другим доступ для редактирования созданного ими узла.
    • Я реализовал это недавно с помощью поля ссылки на пользователя CCK и Node Access User Reference. Вы можете предоставить пользователям разрешение на редактирование своих собственных узлов через основную систему разрешений, и они могут затем добавить других пользователей в поле ссылки пользователя. В моем случае создатели не получили такого разрешения, и я установил значение поля по умолчанию для идентификатора пользователя создателя, что позволяет пользователю удалить себя из возможности редактирования узла.

Все они предполагают, что для вашего контента нет классификации. Вы можете использовать модули доступа к узлам на основе таксономии или органических групп, если ваш контент и пользователи организованы достаточно.

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

Для этого конкретного приложения вы можете создать модуль, который реализует hook_nodeapi и при $op==prepare, проверить идентификатор пользователя по вашей пользовательской ссылке и сделать drupal_go на странице отказа в доступе, если они не совпадают.

Вы можете сделать это с помощью Flexi Access. Предоставление конкретному пользователю привилегии "обновления" на узле позволит ему редактировать узел.

Дополнительные параметры см. На странице: Обзор модулей Node Access @ Drupal.org.

Если только подмножество должно иметь возможность редактировать узлы, вам нужна дополнительная роль "супер ученик".

Модуль Node Access может помочь вам установить соответствующие разрешения для узлов. Вот выдержка из его страницы проекта:

... предоставляет роли и специфичные для пользователя разрешения безопасности для меню, пунктов меню, узлов и интеграции безопасности в системы администрирования и справки. Мы хотели бы предоставить этот набор модулей сообществу, чтобы поделиться его полезностью и привлечь сообщество для предоставления дополнительной поддержки, тестирования и модерации. Особое внимание было уделено тому, чтобы обеспечить удобство управления разрешениями во всех разделах системы (узлы, меню, пункты меню). Также каждый модуль безопасности использует каскадную схему безопасности для обеспечения глобальной безопасности и возможность переопределять или определять исключения для модели безопасности для отдельных элементов.

Другие вопросы по тегам