Drupal 7 - Geben Sie die Berechtigung zum Verwalten von Benutzern, jedoch keine Berechtigungen

11

Wir haben in Drupal 7 eine Site eingerichtet, auf der bestimmte Benutzer Zugriff auf die Benutzerverwaltungsseite haben und neue Benutzer erstellen, Rollen zuweisen usw. können. Wir möchten ihnen jedoch keinen Zugriff auf die Seite gewähren Rollen- und Berechtigungsseiten.

Derzeit hat Drupal nur 2 Berechtigungen Administer Permissionsund Administer users.

Mit dieser Administer usersBerechtigung hat der Benutzer Zugriff auf die Seite Benutzerverwaltung und kann neue Benutzer erstellen, Benutzern jedoch keine Rollen zuweisen.

Wenn der Benutzer über die Administer permissionsBerechtigung verfügt, kann er Benutzern Rollen zuweisen und auch auf die Berechtigungs- und Rollenverwaltungsseiten zugreifen.

Wie würden Sie einem Benutzer das Recht einräumen, Benutzern Rollen zuzuweisen, ihn jedoch daran hindern, auf die Berechtigungsseite zuzugreifen?

E. de Saint Chamas
quelle

Antworten:

16

Ich hatte genau die gleiche Forderung, und ich war in der Lage , die verwenden Rollen Delegation Modul , um es bis zur Perfektion zu bauen :-)

Hier ist mein Szenario, um Ihnen mehr Kontext zu geben -

  1. Ich hatte eine Drupal-Site mit Rollen - A, B, C, Admin, Maint
  2. Ich wollte, dass Benutzer mit der Rolle Maint neue Benutzer erstellen und ihnen dabei auch Rollen zuweisen können
  3. Ich wollte auch Maint-Benutzer einschränken, um den neuen Benutzern nur die Rollen A, B, C und nicht die Rolle Admin zuweisen zu können
  4. Mit dem Modul "Rollendelegation" waren alles nur ein paar Klicks

Hoffe das hilft.

Sumeet Pareek
quelle
1
Verwenden der Rollendelegation Ich kann anscheinend nicht konfigurieren, wer Benutzer erstellen kann. Sie können sie bearbeiten, um Rollen zuzuweisen, aber nicht erstellen. Vermisse ich etwas
Johnathan Elmore
2

Hmmm ... Interessant, dass es dafür keinen eindeutigen Weg zu geben scheint. Dies scheint ein gemeinsames Merkmal für Menschen zu sein. Ich habe ein paar Lösungen gefunden:

http://drupal.org/project/protect_permissions - Dies ist jedoch noch nicht für die Produktion bereit.

Ich denke jedoch, dass Sie mit http://drupal.org/project/permissions_lock erreichen können, was Sie wollen

Sie benötigen außerdem: http://drupal.org/project/user_permissions

Letzteres scheint das Gegenteil von dem zu tun, was Sie wollen, aber Ersteres scheint genau das zu tun, was Sie wollen. Ich habe keines von beiden auf meiner Entwicklungsseite getestet, um sicherzustellen, dass dies zu 100% für Sie funktioniert. Wenn ich auf etwas anderes stoße, werde ich diese Antwort aktualisieren.

Brandon Bearden
quelle
1
Ich habe auch angefangen, über die gleichen Zeilen nachzudenken, die Sie vorgeschlagen haben, aber dann habe ich das Modul Rollendelegation gefunden ( drupal.org/project/role_delegation ). Überprüfen Sie es für diese Art von Anforderungen. Es funktioniert großartig.
Sumeet Pareek
Genial! Ich habe das mit einem Lesezeichen versehen, guter Fund.
Brandon Bearden
2

Die Rollendelegation hinterlässt eine Sicherheitslücke. Sie müssen Personen die Administrationsbenutzer zuweisen , damit diese die Administrationsseite und die darin enthaltenen Tools verwenden können.

Wenn Sie dies jedoch tun, kann diese Rolle sogar Superadmin bearbeiten. Eine vollständige Beschreibung finden Sie unter Vorsicht vor der Berechtigung Benutzer verwalten von Drupal .

Meine Lösung ist Rollendelegation + dieser Hook


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
quelle
0

In letzter Zeit haben wir das roleassign- Modul verwendet, das genau das tut, was Sie verlangen. Es ist grundsätzlich identisch mit dem Modul role_delegation, könnte aber eine Alternative sein, wenn Sie etwas anderes benötigen.

Ein wesentlicher Unterschied besteht darin, wie Sie entscheiden, welche Rollen zugewiesen werden sollen. Mit roleassign wählen Sie einfach die aus, die Sie zur Verfügung stellen möchten, und es wird nur eine einzige neue Berechtigung zum Zuweisen dieser Rollen hinzugefügt: roleassign

Das Modul role_delegation scheint eine neue Berechtigung für jede auf der Site vorhandene Rolle zu erteilen: Berechtigungen für das Modul "role_delegation"

Das Modul role_delegation scheint außerdem fast die dreifache Anzahl von Installationen und eine "empfohlene" Drupal 8-Version zu haben. Die Problemwarteschlange scheint auch in einem besseren Zustand zu sein, also ist es wahrscheinlich die bessere Option?

Davidneedham
quelle