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?
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 -
J'espère que cela t'aides.
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.
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');
}
}
}
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:
Le module role_delegation semble donner une nouvelle autorisation pour chaque rôle qui existe sur le site:
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?