Предоставьте определенной роли пользователя возможность предоставить пользователю роль, но не роль "администратор"
У меня есть настройка с использованием drupal 7, где я, как суперадминистратор, могу добавить пользователя с ролью "менеджер" (который также может добавлять пользователей в свой магазин), но я также хочу предоставить "менеджеру" возможность указать, будет ли у пользователя, которого он хочет добавить, одна из двух простых ролей (одна для создания/добавления данных и одна для просмотра отчетов только о продажах), скажем, "торговый агент", "отчет о продажах". В настоящее время в моей настройке менеджер может указать все роли, включая роль "администратор", которую я должен иметь доступ только в качестве разработчика/суперадминистратора.
Я искал модули, подходящие для этого, но мое время истекает.
Спасибо за всю вашу помощь. Друпал - это здорово!
2 answers
Для вас есть идеальный модуль - Делегирование ролей, а также стабильная версия 7.x. Вот выдержка об этом со страницы проекта модуля:
... позволяет администраторам сайта предоставлять некоторым ролям полномочия назначать выбранные роли пользователям без необходимости разрешения "администрировать".
Для каждой роли Делегирование ролей предоставляет новое разрешение роли "Назначить РОЛЬ", позволяющее назначать эту роль.
Используйте модуль Флаг для создания 2 (не глобальных) флагов со следующими деталями:
Эти флаги будут использоваться для обозначения пользователей (не узлов или чего-то еще).
Скажем, вы помечаете эти флаги Создание/добавление данных и Просмотр отчетов.
Только пользователи, у которых есть роль менеджер разрешено использовать эти флаги (что-то, что вы можете указать при настройке этих флаги).
Создайте 1-е правило (используя модуль Правила), например:
Событие правил: Пользователь помечается Просмотр отчетов флаг.
Действие правил: Предоставьте доступ к вашей роли Просмотр отчетов.
Создайте 2-е правило, аналогичное 1-му правилу, но теперь для Создание/добавление данных ( флаг и роль).
Возможные улучшения
Вы могли бы сделайте еще один шаг вперед, также используя правила : Создайте 3-е (и 4-е) правило с событием правил "Пользователь не помечен" и запустите действие правил "Удалить доступ к роли, соответствующей флагу".
При желании вы даже можете объединить эти 4 правила в одно правило, используя модуль Условные правила.
Избегайте модульита
С помощью описанного выше подхода вы снижаете риск того, что ваш сайт начнет страдать модульностью (= слишком много внесенных модулей, которые делайте только 1 конкретную вещь). Потому что есть вероятность, что вы уже используете Правила на своем сайте, возможно, также Флаг уже. И если вы еще не используете эти модули, вы найдете десятки других вариантов использования для этих 2 модулей... и, возможно, избавиться от еще большего количества модулей, которые выполняют только 1 задачу (для чего еще вы можете использовать модуль делегирования ролей ?).