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

11

Nous avons configuré un site dans 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 voulons pas leur donner accès à la Pages Rôles et autorisations.

Drupal n'a actuellement que 2 autorisations Administer Permissionset Administer users.

Avec l' Administer usersautorisation, 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 l' Administer permissionsautorisation, 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?

E. de Saint Chamas
la source

Réponses:

16

J'avais exactement la même exigence et j'ai pu utiliser le module de 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.

Sumeet Pareek
la source
1
À l'aide de la délégation des rôles, il ne semble pas que je puisse configurer qui peut créer des utilisateurs. Ils peuvent les modifier pour attribuer des rôles, mais pas les créer. Suis-je en train de manquer quelque chose?
Johnathan Elmore
2

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.

Brandon Bearden
la source
1
J'ai également commencé à penser dans le même sens que vous avez suggéré, mais j'ai ensuite trouvé le module Délégation de rôles ( drupal.org/project/role_delegation ). Vérifiez-le pour ce genre d'exigences. Cela fonctionne très bien.
Sumeet Pareek
Impressionnant! Je l'ai mis en signet, bonne trouvaille.
Brandon Bearden
2

La délégation des rôles laisse une faille de sécurité. Vous devez affecter des personnes aux administrateurs 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');
        }
    }
}
Anthony Phillips
la source
0

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, il vous suffit de sélectionner ceux que vous souhaitez rendre disponibles, et il n'ajoute qu'une seule nouvelle autorisation pour attribuer ces rôles: réaffecter

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

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

davidneedham
la source