Drupal 7 - Дайте разрешение на управление пользователями, но не разрешения

11

Мы создали сайт в Drupal 7, на котором мы хотели бы, чтобы определенные пользователи имели доступ к странице управления пользователями и могли создавать новых пользователей, назначать роли и т. Д., Но мы не хотим предоставлять им доступ к Роли и страницы разрешений.

В настоящее время Drupal имеет только 2 разрешения Administer Permissionsи Administer users.

С Administer usersразрешения пользователь имеет доступ к странице управления пользователями и может создавать новых пользователей, но не может назначать роли пользователям.

Если у пользователя есть Administer permissionsразрешение, он может назначать роли пользователям, а также получать доступ к страницам управления разрешениями и ролями.

Как бы вы предоставили пользователю право назначать роли пользователям, но не позволяли ему получать доступ к странице разрешений?

Э. де Сен Шамас
источник

Ответы:

16

У меня было точно такое же требование, и я смог использовать модуль делегирования ролей, чтобы довести его до совершенства :-)

Вот мой сценарий, чтобы дать вам больше контекста -

  1. У меня был друпальный сайт с ролями - A, B, C, Admin, Maint
  2. Я хотел, чтобы пользователи с ролью Maint могли создавать новых пользователей, а также назначать им роли при этом.
  3. Я также хотел ограничить пользователей Maint возможностью назначать только роли A, B, C новым пользователям, а не роль Admin.
  4. Все это было всего за несколько кликов с модулем делегирования ролей

Надеюсь это поможет.

Сумит Парик
источник
1
Использование делегирования ролей Мне кажется, что я не могу настроить, кто может создавать пользователей. Они могут редактировать их для назначения ролей, но не создавать их. Я что-то упускаю?
Джонатан Элмор
2

Хммм ... Интересно, что, кажется, нет четкого способа сделать это. Кажется, это может быть общей чертой для людей. Я нашел пару решений:

http://drupal.org/project/protect_permissions - Однако, это еще не готово к производственному использованию.

Тем не менее, я думаю, что вы можете сделать то, что вы хотите с: http://drupal.org/project/permissions_lock

Вам также понадобится: http://drupal.org/project/user_permissions

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

Брэндон Бирден
источник
1
Я также начал думать в том же ключе, что вы предложили, но потом я нашел модуль Roles Delegation ( drupal.org/project/role_delegation ). Проверьте это для такого рода требований. Работает отлично.
Сумит Парик
Потрясающие! Я отметил это, хорошая находка.
Брэндон Бирден
2

Роль делегации оставляет дыру в безопасности. Вам нужно назначить людей для администрирования пользователей, чтобы они могли использовать страницу администрирования и имеющиеся у нее инструменты.

Но если вы это сделаете, то эту роль сможет редактировать даже суперадмин. Проверьте Осторожно разрешение администратора Drupal пользователей для полного описания.

Мое решение - делегирование ролей + этот хук


function hook_user_presave(&$edit, $account, $category) {
    if( $account->uid == 1 || in_array('adminrole',$account->roles)){ //trying to edit an admin
        global $user;
        if($user->uid != 1){//only super admin can do that
            drupal_set_message( "You attempted to edit an admin or dev user name and you are not allowed, this attempt was logged." ,'error');
            watchdog('permissions_extra','Logged in user %user tried to edit account %account', array('%user' => $user->uid, '%account' => $account->uid), WATCHDOG_ERROR);
            drupal_goto('/admin/people');
        }
    }
}
Энтони Филлипс
источник
0

В последнее время мы использовали модуль roleassign , который выполняет именно то, что вы просите. Он в основном идентичен модулю role_delegation, но может быть альтернативой, если вам нужно что-то немного другое.

Одним из ключевых отличий является то, как вы решаете, какие роли доступны для назначения. С roleassign вы просто выбираете, какие из них вы хотите сделать доступными, и он добавляет только одно новое разрешение для назначения этих ролей: roleassign

Модуль role_delegation, по-видимому, дает новое разрешение для каждой роли, существующей на сайте: разрешения для модуля role_delegation

Модуль role_delegation также, по-видимому, почти в три раза превышает количество установок и «рекомендуемый» выпуск Drupal 8. Очередь вопросов также, кажется, в лучшей форме, так что это, вероятно, лучший вариант?

davidneedham
источник