Разрешение Drupal, пользовательский случай
Цель сайта - поддерживать product
листинга.
- каждый
product
Составляет название, описание и количество (поле CCK). - каждый
product
принадлежит кshop
, - каждый
shop
имеетmanager
, - Все
products
видны всем. manager
можно только добавлять / редактироватьproducts
Его личноеshop
,- Сайт
admin
может создать новыйshops
и новыйmanagers
,
Как я могу установить разрешение для вышеуказанного сценария?
Я думаю об использовании Taxonomy
для названий магазинов, таксономии контроля доступа для контроля разрешений. Не уверен, что я на правильном пути, хотя...
Кроме того, органические группы также вариант?
Спасибо!
2 ответа
TAC решает ваши проблемы. Я использую это в очень похожем сценарии. Вот как это сделать:
- Создайте новый тип контента "Продукт" с полями, которые вы указали
- Создайте термин таксономии для каждого магазина. Включить и требовать таксономию для типа контента "Продукт"
- Создать роль для каждого магазина
- Включить TAC для этой роли
- Установите разрешения TAC для Global, чтобы разрешить просмотр, но запретить обновление, удаление, создание и просмотр списка.
- Установите разрешения TAC для термина магазина, чтобы разрешить Просмотр, Обновление, Удалить, Создать и Список.
- Сохранить и восстановить разрешения
Это должно быть сделано, если ваши разрешения для типа контента настроены так, чтобы анонимные пользователи могли просматривать поля в "Продукте".
Я думаю, что ваш подход к таксономии Access Control может работать, но назначение пользователей таксономии для соответствующих разрешений потребовало бы немного пользовательского кода.
Использование органических групп может обеспечить более надежный доступ "из коробки" (каждый магазин - это группа, а затем продукты публикуются в этой группе), но вам нужно будет выделить множество значений по умолчанию, чтобы скрыть форум / стену. рабочий процесс новостей, с которым OG поставляется из коробки (это можно сделать с помощью хуков, предоставляемых OG).
Преимущество заключается в том, что для добавления менеджеров по продукту в магазин вы просто должны назначить их администратором группы (таким образом в магазине может быть несколько администраторов). Вы должны установить каждую группу как общедоступную (чтобы все продукты были видны), но только предоставили разрешение на редактирование узлов в группе администратору этой группы. Администраторы группы также будут единственными, у кого есть разрешение на создание узлов продукта, которые будут настроены как узлы группы (это делается на экране редактирования типа узла или на экране администратора OG).