Drupal 7 - Zezwól na zarządzanie użytkownikami, ale nie na uprawnienia

11

W Drupal 7 utworzyliśmy witrynę, w której chcielibyśmy, aby niektórzy użytkownicy mieli dostęp do strony zarządzania użytkownikami i mogli tworzyć nowych użytkowników, przypisywać role itp., Ale nie chcemy im dawać dostępu do Strony ról i uprawnień.

Obecnie Drupal ma tylko 2 uprawnienia Administer Permissionsi Administer users.

Za Administer userszgodą użytkownik ma dostęp do strony Zarządzanie użytkownikami i może tworzyć nowych użytkowników, ale nie może przypisywać ról użytkownikom.

Jeśli użytkownik ma Administer permissionsuprawnienia, może przypisywać role użytkownikom, a także uzyskiwać dostęp do stron uprawnień i zarządzania rolami.

W jaki sposób przyznajesz użytkownikowi prawo do przypisywania ról użytkownikom, ale uniemożliwiasz mu dostęp do strony uprawnień?

E. de Saint Chamas
źródło

Odpowiedzi:

16

Miałem dokładnie takie same wymagania i mogłem użyć modułu Delegowanie ról , aby zbudować go do perfekcji :-)

Oto mój scenariusz, aby dać ci więcej kontekstu -

  1. Miałem stronę Drupala z rolami - A, B, C, Administrator, Maint
  2. Chciałem, aby użytkownicy z rolą Maint mogli tworzyć nowych użytkowników i jednocześnie przypisywać im role
  3. Chciałem również ograniczyć użytkowników Maint, aby mogli przypisywać tylko role A, B, C nowym użytkownikom, a nie rolę Administratora
  4. Wszystko to zaledwie kilka kliknięć dzięki modułowi Delegowanie ról

Mam nadzieję że to pomoże.

Sumeet Pareek
źródło
1
Korzystanie z delegowania ról Wydaje mi się, że nie jestem w stanie określić, kto może tworzyć użytkowników. Mogą je edytować, aby przypisać role, ale ich nie tworzyć. Czy coś brakuje?
Johnathan Elmore
2

Hmmm ... Interesujące, że nie wydaje się, aby istniał jednoznaczny sposób na zrobienie tego. Wydaje się, że może to być wspólna cecha ludzi. Znalazłem kilka rozwiązań:

http://drupal.org/project/protect_permissions - Jednak nie jest to jeszcze gotowe do użytku produkcyjnego.

Myślę jednak, że możesz osiągnąć to, co chcesz: http://drupal.org/project/permissions_lock

Będziesz także potrzebować: http://drupal.org/project/user_permissions

Później wydaje się, że robi coś przeciwnego do tego, co chcesz, ale ten pierwszy wydaje się robić dokładnie to, co chcesz. Nie testowałem żadnego z nich na mojej stronie deweloperów, aby upewnić się, że w 100% to będzie dla ciebie działać. Jeśli natrafię na coś innego, zaktualizuję tę odpowiedź.

Brandon Bearden
źródło
1
Zacząłem też myśleć o tych samych liniach, które zasugerowałeś, ale potem znalazłem moduł Delegowanie ról ( drupal.org/project/role_delegation ). Sprawdź to pod kątem tego rodzaju wymagań. Działa świetnie.
Sumeet Pareek
Niesamowite! Dodałem to do zakładek, dobre znalezisko.
Brandon Bearden
2

Delegacja ról pozostawia lukę w zabezpieczeniach. Musisz przypisać osoby do administrowania użytkownikami, aby mogli korzystać ze strony administracyjnej i dostępnych narzędzi.

Ale jeśli to zrobisz, ta rola będzie mogła edytować nawet superadmin. Zaznacz Uważaj na uprawnienia administratora Drupala, aby uzyskać pełny opis.

Moje rozwiązanie to delegowanie ról + ten hak


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');
        }
    }
}
Anthony Phillips
źródło
0

Ostatnio korzystamy z modułu roleassign , który robi dokładnie to, o co prosisz. Jest zasadniczo identyczny z modułem role_delegation, ale może być alternatywą, jeśli potrzebujesz czegoś nieco innego.

Jedną z kluczowych różnic jest sposób decydowania, które role są dostępne do przypisania. Dzięki roleassign po prostu wybierasz, które chcesz udostępnić, i dodaje tylko jedno nowe uprawnienie do przypisywania tych ról: roleassign

Wygląda na to, że moduł role_delegation daje nowe uprawnienia dla każdej roli, która istnieje w serwisie: uprawnienia modułu rola_delegacja

Wydaje się, że moduł role_delegation ma prawie trzykrotnie większą liczbę instalacji i „zalecane” wydanie Drupal 8. Kolejka problemów również wydaje się być w lepszej formie, więc prawdopodobnie jest to lepsza opcja?

davidneedham
źródło