
Utilisateurs, Rôles et Permissions dans Drupal - les Informations les Plus Importantes pour un Développeur Drupal
Drupal est choisi comme plateforme pour créer des sites web, entre autres, en raison de sa flexibilité. Si vous souhaitez un système parfaitement adapté à votre modèle d'entreprise et meilleur que les systèmes concurrents, Drupal s'avérera parfait. L'un des domaines que vous pouvez personnaliser dans Drupal est le système de permissions des utilisateurs. Prenez quelques minutes pour découvrir les capacités de gestion des permissions de Drupal.
Informations générales
Drupal vous permet de gérer l'accès depuis le panneau d'administration et à partir du niveau de code. Dans cet article, je vais présenter ces deux possibilités et les exemples les plus courants de leur utilisation.
Rôles et permissions dans le cœur de Drupal
Si c'est la première fois que vous vous occupez de Drupal et de son système de permissions, vous devez savoir qu'il y a trois éléments utilisés pour accorder des permissions :
- Utilisateur
- Rôle
- Permission
Lors de l'installation de Drupal, vous créez un compte administrateur root dans le système (identifiant 1 dans la base de données). Il peut être comparé à l'utilisateur root dans les systèmes Unix. Cet utilisateur a accès à toutes les sous-pages et paramètres du système.
Vous pouvez ajouter d'autres utilisateurs au système. Cela pourrait être, par exemple, les éditeurs responsables de la création de contenu, ou les modérateurs décidant de la publication des commentaires ajoutés.
Si vous voulez attribuer une permission à un utilisateur donné, vous le faites indirectement en lui assignant un rôle. Il n'y a aucune association entre un utilisateur et les permissions dans Drupal. Il y a une association utilisateur-rôle et une association rôle-permission.
Comment ajouter un rôle d'éditeur et lui attribuer les permissions appropriées
C'est probablement le problème le plus courant rencontré dans Drupal. Vous devez laisser les utilisateurs entrer dans votre système, mais vous voulez limiter leurs droits uniquement à la gestion du contenu. Vous ne voulez pas leur donner des droits pour modifier la configuration du système ou ajouter de nouveaux utilisateurs.
Pour y parvenir, suivez ces étapes :
- Ajoutez un nouveau rôle sur la page "/admin/people/roles/add/".
- Attribuez les permissions sélectionnées au rôle sur la page "/admin/people/permissions/". Pour celles liées au contenu, consultez la section "Node". Ci-dessous, vous pouvez trouver plus d'informations sur la liste des permissions.
- Attribuez l'utilisateur sélectionné au nouveau rôle sur la page "/admin/people/".
Connectez-vous ensuite au compte de l'utilisateur sélectionné et vérifiez s'il possède les permissions appropriées. Peut-être devez-vous les étendre ou les retirer. Si vous n'êtes pas familier avec le système de permissions de Drupal, un tel test en vous connectant au compte utilisateur vaut toujours la peine d'être effectué.
Vous n'avez pas besoin de connaître le mot de passe du compte utilisateur sur lequel vous souhaitez vous connecter. Vous devez simplement installer le module Masquerade. Grâce à lui, vous pouvez vous connecter au compte de n'importe quel utilisateur.
Aperçu des permissions du cœur de Drupal
En accédant à la page "/admin/people/permissions/" pour la première fois, on peut avoir un peu peur. C'est probablement la plus longue page de configuration dans Drupal.
Commençons par l'en-tête du tableau. Vous verrez toujours le mot "PERMISSION" dans la première colonne. Dans les cellules suivantes de la première ligne, il y aura les noms des rôles. Plus vous ajoutez de rôles (vous pouvez les ajouter sur la page /admin/people/roles/add/), plus vous en verrez dans ce tableau.
Ensuite, en regardant la première colonne dans son intégralité, vous verrez une longue liste de permissions. Les permissions sont divisées en sections. Les sections portent les noms des modules. La section "Node" mentionnée précédemment est nommée ainsi parce que les permissions dans cette section sont définies dans le module "node" (vous le trouverez sur votre disque dans le répertoire core/modules/node).
Certaines sections n'ont qu'une seule permission, par exemple la section "Bloc" n'a que la permission "Administrer les blocs". D'autres en ont beaucoup plus.
Si c'est la première fois que vous vous occupez des paramètres de permissions de Drupal, je vous suggère de lire les noms de toutes les permissions. Les noms eux-mêmes expliquent à quoi sert une permission donnée.
Anonyme & Authentifié
Il y a deux rôles système dans Drupal qui ne peuvent pas être supprimés :
- Utilisateur Anonyme
- Utilisateur Authentifié
Le premier de ces rôles est responsable de tous les utilisateurs non connectés. Par exemple : si vous voulez ajouter la capacité de voir les profils utilisateurs pour tous les non-connectés pour la permission "Afficher les informations de l'utilisateur", cochez la case dans la colonne "Utilisateur Anonyme".
"Utilisateur Authentifié" est le rôle attribué à tous les utilisateurs connectés. Il est important ici de comprendre l'héritage des permissions. Si vous attribuez une permission à "Utilisateur Authentifié", alors tous les autres rôles (sauf anonyme) recevront immédiatement cette permission.
Exemple : Vous avez le rôle "Éditeur" dans le système. Vous attribuez la permission "Afficher les informations de l'utilisateur" au rôle "Utilisateur Authentifié". Tous ceux qui ont le rôle "Éditeur" recevront également la permission car ils sont également considérés comme des utilisateurs connectés.
De plus, gardez à l'esprit que si vous sélectionnez une permission pour le rôle Anonyme (par exemple "Afficher les informations de l'utilisateur" encore), mais ne la sélectionnez pas pour "Utilisateur Authentifié", les utilisateurs connectés ne pourront pas accéder à la section sélectionnée ("Afficher les informations de l'utilisateur" – ils n'auront pas accès aux profils utilisateurs).
À retenir
- Dans Drupal, vous pouvez ajouter un nombre illimité de rôles.
- La liste des permissions est définie par les modules dans les fichiers modulename.permissions.yml (plus d'informations peuvent être trouvées plus loin dans le texte).
- Les rôles "Authentifié" et "Anonyme" sont séparés – si vous sélectionnez quelque chose pour "Anonyme" seulement, les utilisateurs connectés ne recevront pas cette permission.
- Pour tester les permissions, il est bon d'utiliser le module Masquerade .
Permissions personnalisées dans le code
Parfois, il est nécessaire de définir vos propres permissions, par exemple pour les pages d'administration définies par de nouveaux modules ou pour modifier l'accès aux pages définies par le cœur de Drupal.
Comment définir une permission
Vous devez simplement ajouter le fichier modulename.permissions.yml dans le nouveau module (ou dans celui existant, si vous avez déjà créé vos propres modules). Si vous ne savez pas comment créer vos propres modules, je vous encourage à visiter le site Web.
Le fichier de permission est un fichier au format YML. Un exemple simple peut être trouvé dans le module Popup Message, juste ici.
Le fichier définit un nom unique pour la permission (par exemple, "administration des messages popup"), et ensuite – les noms affichés sur la page "/admin/people/permissions/". Vous pouvez fournir un titre dans le paramètre "title" et en plus – une description plus détaillée dans le paramètre "description".
C'est suffisant pour définir de nouvelles permissions. Après avoir créé le fichier et vidé le cache, vous verrez les nouvelles permissions sur la page "/admin/people/permissions/".
Comment utiliser une permission
Le plus souvent, les permissions sont utilisées lors de la définition du routage. Jetez un œil au fichier.
Dans la section "requirements", vous pouvez ajouter le paramètre "permission". De cette façon, vous pouvez définir les utilisateurs (ou plutôt les rôles) avec quelle permission peuvent afficher la page définie dans le routage.
La deuxième méthode est de vérifier les permissions dans votre code. L'objet utilisateur dans Drupal a la méthode "hasPermission". De cette façon, vous pouvez vérifier si un utilisateur donné a la permission sélectionnée.
// Obtenez l'utilisateur actuel
$user = \Drupal::currentUser();
// Vérifiez la permission
if ($user->hasPermission('afficher le message popup')) {
// Faites quelque chose.
}
Il vaut la peine de jeter un coup d'œil à la méthode hasPermission ici. Comme vous pouvez le voir, l'identifiant utilisateur est vérifié là-bas. Si l'identifiant est égal à 1, l'utilisateur obtient l'accès sans vérifier davantage s'il a des rôles sélectionnés.
Comment vérifier si l'utilisateur a un rôle
Drupal offre également une méthode prête à l'emploi pour vérifier si un utilisateur donné a un rôle avec un nom spécifique. Voici un exemple de comment vous pouvez le faire dans le code.
// Obtenez l'utilisateur actuel
$user = \Drupal::currentUser();
// Chargez l'entité utilisateur.
$user_entity = \Drupal\user\Entity\User::load($user->id());
// Vérifiez la permission
if ($user_entity->hasRole('éditeur')) {
// Faites quelque chose.
}
De plus, il existe également des méthodes liées aux rôles Authentifié et Anonyme :
- $user-> isAuthenticated();
- $user-> isAnonymous();
Comment vérifier les permissions pour les opérations sur une entité
Dans le code de l'application, vous pouvez également vérifier les permissions pour opérer sur des entités sélectionnées (par exemple, Node ou User). Vous pouvez effectuer certaines opérations, par exemple selon que l'utilisateur a le droit de modifier une entité donnée ou d'afficher une entité.
Les entités dans Drupal ont la méthode access($operation = 'view', AccountInterface $account = NULL, $return_as_object = FALSE). Un exemple simple d'utilisation est fourni ci-dessous :
$nid = 545;
$node = \Drupal\node\Entity\Node::load($nid);
$user = \Drupal::currentUser();
if ($node->access('edit', $user)) {
// Faites quelque chose
}
Définir des permissions de contenu
Drupal vous permet de gérer l'accès à l'affichage et à l'édition au niveau d'une seule entrée (node). Ce sujet a été décrit en détail dans notre autre article de blog. Grzegorz Pietrzak l'a décrit dans l'article Drupal Node grants.
Modules prêts à l'emploi pour Drupal liés aux permissions
Il existe déjà de nombreux modules prêts à l'emploi étendant les fonctionnalités du cœur de Drupal. Vous devriez les vérifier avant de commencer à écrire vos propres modules liés aux permissions.
Voici une liste de quelques modules sélectionnés qui valent la peine d'être vérifiés et testés :
- Permissions du contenu de bloc
- Permissions de la région de bloc
- Administration de menu par menu
- Remplacement des options de node
- Accès par rôle à l'élément de menu
- Pages protégées
- Administre les utilisateurs par rôle
- Permissions personnalisées
- Permissions du vocabulaire par rôle
- Désactiver l'édition de l'utilisateur 1
Consultez également la page et jetez un œil à d'autres modules. Peut-être que certains d'entre eux vous seront utiles.
Résumé
Drupal est un système très flexible. En regardant simplement les possibilités concernant les permissions, vous pouvez voir la multitude de possibilités de configuration. Si vous construisez un grand site web avec de nombreux niveaux d'éditeur ou une application interne (par exemple un système intranet) où les utilisateurs doivent avoir des permissions limitées, Drupal fera très bien le travail.
Si vous avez besoin de l'aide de spécialistes Drupal pour les permissions ou d'autres problèmes, utilisez les services de nos développeurs Drupal.