Drupal 7 - Надання дозволу на керування користувачами, але не дозволи


11

Ми створили сайт в Drupal 7, на якому ми хотіли б, щоб певні користувачі мали доступ до сторінки управління користувачами та мали змогу створювати нових користувачів, призначати ролі тощо, але ми не хочемо надавати їм доступ до Ролі та сторінки дозволів.

Наразі Drupal має лише 2 дозволу Administer Permissionsта Administer users.

З Administer usersдозволу користувач має доступ до сторінки «Керування користувачами» та може створювати нових користувачів, але не може присвоювати їм ролі.

Якщо у користувача є Administer permissionsдозвіл, він може призначити користувачам ролі, а також отримати доступ до сторінок дозволу та управління ролями.

Як би ви надали користувачеві право присвоювати ролі користувачам, але не дозволяти йому отримувати доступ до сторінки дозволу?

Відповіді:


16

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

Ось мій сценарій, щоб дати вам більше контексту -

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

Сподіваюсь, це допомагає.


1
Використовуючи делегування ролей, я не можу налаштувати, хто може створювати користувачів. Вони можуть редагувати їх для призначення ролей, але не створювати їх. Я щось пропускаю?
Джоннатан Елмор

2

Гммм ... Цікаво, що, здається, немає чіткого способу цього зробити. Здається, це може бути загальною рисою для людей. Я знайшов пару рішень:

http://drupal.org/project/protect_permissions - Однак це ще не готово для використання у виробництві.

Однак, я думаю, ви можете досягти того, що хочете: http://drupal.org/project/permissions_lock

Також вам знадобиться: http://drupal.org/project/user_permissions

Пізніше, здається, робить протилежне тому, що ви хочете, але перший, здається, робить саме те, що ви хочете. Я не перевіряв жодного з них на своєму розробнику, щоб переконатися, що це 100%. Якщо я натрапляю на щось інше, я оновлю цю відповідь.


1
Я також почав думати про ті самі рядки, які ви запропонували, але тоді я знайшов модуль делегування ролей ( drupal.org/project/role_delegation ). Перевірте це на такі вимоги. Це чудово працює.
Sumeet Pareek

Дивовижно! Я зробив закладки на цьому, гарна знахідка.
Брендон Беарден

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

Останнім часом ми використовуємо модуль присвоєння ролей , який робить саме те, що ви просите. Він принципово ідентичний модулю role_delegation, але може бути альтернативою, якщо вам потрібно щось трохи інше.

Одна з ключових відмінностей полягає в тому, як ви вирішите, які ролі доступні для призначення. За допомогою присвоєння ролей ви просто вибираєте, які з них ви хочете зробити доступними, і це додає лише один новий дозвіл на призначення цих ролей: присвоєння ролей

Можливо, модуль role_delegation дає новий дозвіл на кожну роль, яка існує на сайті: Дозволи на модуль role_delegation

Можливо, модуль role_delegation також має майже втричі більше встановлень та "рекомендований" випуск Drupal 8. Черга випусків також здається в кращій формі, тож, мабуть, кращий варіант?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.