web-dev-qa-db-fra.com

Drupal 7 - Donner l'autorisation de gérer les utilisateurs mais pas les autorisations

Nous avons configuré un site en Drupal 7 sur lequel nous aimerions que certains utilisateurs aient accès à la page de gestion des utilisateurs et puissent créer de nouveaux utilisateurs, attribuer des rôles, etc., mais nous ne Je ne veux pas leur donner accès aux pages Rôles et autorisations.

Actuellement Drupal n'a que 2 autorisations Administer Permissions et Administer users.

Avec le Administer users autorisation, l'utilisateur a accès à la page Gestion des utilisateurs et peut créer de nouveaux utilisateurs mais ne peut pas attribuer de rôles aux utilisateurs.

Si l'utilisateur a le Administer permissions autorisation, il peut attribuer des rôles aux utilisateurs et également accéder aux pages d'autorisation et de gestion des rôles.

Comment accorderiez-vous à un utilisateur le droit d'attribuer des rôles aux utilisateurs, mais l'empêcher d'accéder à la page d'autorisation?

11
E. de Saint Chamas

J'avais exactement la même exigence, et j'ai pu utiliser le module Délégation de rôles pour le construire à la perfection :-)

Voici mon scénario pour vous donner plus de contexte -

  1. J'avais un site drupal avec des rôles - A, B, C, Admin, Maint
  2. Je voulais que les utilisateurs avec le rôle Maint puissent créer de nouveaux utilisateurs et leur attribuer des rôles tout en le faisant
  3. Je voulais également limiter les utilisateurs de Maint pour pouvoir attribuer uniquement les rôles A, B, C aux nouveaux utilisateurs et non le rôle Admin
  4. Tout cela en quelques clics avec le module de délégation des rôles

J'espère que cela t'aides.

16
Sumeet Pareek

Hmmm ... Intéressant qu'il ne semble pas y avoir de méthode claire pour le faire. Il semble que cela pourrait être une caractéristique courante pour les gens. J'ai trouvé quelques solutions:

http://drupal.org/project/protect_permissions - Cependant, ce n'est pas encore prêt pour une utilisation en production.

Cependant, je pense que vous pouvez accomplir ce que vous voulez avec: http://drupal.org/project/permissions_lock

Vous aurez également besoin de: http://drupal.org/project/user_permissions

Le dernier semble faire le contraire de ce que vous voulez, mais le premier semble faire exactement ce que vous voulez. Je n'ai testé ni l'un ni l'autre sur mon site de développement pour m'assurer que c'est à 100% ce qui fonctionnera pour vous. Si je tombe sur autre chose, je mettrai à jour cette réponse.

2
Brandon Bearden

La délégation des rôles laisse une faille de sécurité. Vous devez attribuer aux utilisateurs les administrateurs des utilisateurs pour qu'ils puissent utiliser la page d'administration et les outils dont elle dispose.

Mais si vous le faites, ce rôle pourra modifier même le superadmin. Vérifiez Méfiez-vous de l'autorisation Administrer les utilisateurs de Drupal pour une description complète.

Ma solution est la délégation de rôles + ce crochet


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');
        }
    }
}
2
Anthony Phillips

Dernièrement, nous utilisons le module roleassign , qui fait exactement ce que vous demandez. Il est fondamentalement identique au module role_delegation, mais pourrait être une alternative si vous aviez besoin de quelque chose de légèrement différent.

L'une des principales différences réside dans la manière dont vous décidez quels rôles sont disponibles à attribuer. Avec roleassign, vous sélectionnez simplement ceux que vous souhaitez rendre disponibles, et il n'ajoute qu'une seule nouvelle autorisation pour attribuer ces rôles: roleassign

Le module role_delegation semble donner une nouvelle autorisation pour chaque rôle qui existe sur le site: role_delegation module permissions

Le module role_delegation semble également avoir presque triplé le nombre d'installations, et une version "recommandée" Drupal 8). La file d'attente des problèmes semble également être en meilleure forme, donc c'est probablement la meilleure option?

0
davidneedham