Intégration avec WordPress pour l'autorisation
Deuxième partie de la série sur l'intégration de Logto avec WordPress, axée sur l'autorisation.
Dans le précédent article, nous avons discuté de la manière d'intégrer Logto pour l'authentification dans WordPress. Cet article, en tant que deuxième partie, s'attaquera au processus d'autorisation, se concentrant sur le système de rôles dans WordPress et sur la manière de mettre en œuvre la correspondance de rôles avec Logto, étant donné que le plugin que nous avons utilisé dans l'article précédent ne fournit pas directement des capacités d'autorisation.
Nous allons créer une fonction de correspondance de rôles qui attribue automatiquement les rôles WordPress aux utilisateurs en fonction de leurs rôles fournis par Logto RBAC (Contrôle d'accès basé sur les rôles).
Comprendre les rôles d'utilisateur WordPress
WordPress dispose d'un système de gestion de rôles d'utilisateur intégré qui définit quelles actions (capacités) un utilisateur peut effectuer sur un site. Les rôles d'utilisateur par défaut incluent l'Administrateur, l'Éditeur, l'Auteur, le Contributeur et l'Abonné, chacun avec son propre ensemble de capacités
Ces rôles sont essentiels pour maintenir la sécurité et l'efficacité des opérations du site, car ils aident à garantir que les utilisateurs ont des niveaux d'accès appropriés en fonction de leurs responsabilités.
La solution : correspondance de rôles personnalisée
Logto utilise le contrôle d'accès basé sur les rôles (RBAC) comme modèle d'autorisation, en utilisant des "portées" comme la plus petite unité de permission. Ces portées définissent les actions spécifiques qu'un utilisateur authentifié est autorisé à effectuer dans une application. Cependant, WordPress fonctionne sur un principe différent pour gérer les permissions des utilisateurs, en se basant sur des "rôles" prédéfinis qui regroupent diverses capacités.
Compte tenu de cette différence fondamentale, nous suggérons de créer des rôles spéciaux au sein de Logto qui correspondent aux rôles définis dans WordPress. Ces rôles peuvent ne pas avoir de portées, ils sont uniquement utilisés comme référence pour mapper les utilisateurs aux rôles WordPress.
Prérequis
Avant de commencer, assurez-vous d'avoir ce qui suit :
- Terminez le précédent article sur l'intégration de Logto avec WordPress pour l'authentification, cela inclut :
- Un site WordPress avec accès administrateur.
- Un compte Logto avec une application configurée pour votre site WordPress.
- Le plugin OpenID Connect Generic installé et configuré sur votre site WordPress.
- Configurez des rôles dans Logto qui correspondent aux rôles dans WordPress. Par exemple, si vous avez un rôle 'éditeur' dans WordPress, créez un rôle 'group:editors' dans Logto.
Mise en œuvre de la correspondance de rôles avec un code personnalisé
Pour mettre en œuvre la correspondance de rôles, nous allons ajouter un code personnalisé au fichier functions.php
du thème WordPress. Cela implique d'utiliser le crochet d'action wp_login
, qui se déclenche lorsqu'un utilisateur se connecte. Voici un guide étape par étape sur la façon de configurer cela :
Étape 1 : accédez au functions.php
de votre thème
Ouvrez le fichier functions.php
de votre thème. Vous pouvez accéder à ce fichier par le biais du panneau d'administration WordPress en naviguant vers Apparence > Éditeur de thème et en sélectionnant functions.php
dans la liste de fichiers de droite. Ou dans le code source, allez dans le répertoire de votre thème WordPress et localisez le fichier functions.php
. Ce fichier vous permet d'ajouter des fonctions PHP personnalisées qui étendent les fonctionnalités de votre site WordPress.
Étape 2 : écrivez la fonction de correspondance des rôles
Voici un exemple simple d'une fonction que vous pourriez ajouter à functions.php. Cette fonction sera déclenchée lors de la connexion de l'utilisateur, et elle attribuera des rôles en fonction du rôle de l'utilisateur roles
récupéré de Logto.
Étape 3 : comprendre le code et le personnaliser
-
fonction
logto_handler
: Cette fonction prend deux paramètres :$user_login
(nom d'utilisateur) et$user
(objet utilisateur). Elle récupère les rôles de Logto qui sont stockés dans le méta-utilisateur sousopenid-connect-generic-last-user-claim
, mappe ce rôle à un rôle WordPress correspondant, et l'attribue à l'utilisateur. -
add_action
: Cette ligne connecte la fonctionlogto_handler
à l'actionwp_login
, qui se déclenche après qu'un utilisateur se soit connecté. Le10
est la priorité (par défaut), et le2
indique le nombre d'arguments que la fonction accepte.
L'exemple ci-dessus attribue le rôle 'éditeur' aux utilisateurs authentifiés via Logto avec le nom de rôle group:editors
. Cependant, dans un scénario réel, vous devrez probablement mettre en œuvre plus de types de correspondances de rôles.
Vous pouvez trouver la liste des rôles WordPress et leurs capacités ici.
Étape 4 : testez votre configuration
Maintenant, testons la fonction de correspondance de rôles en nous connectant avec un utilisateur qui a le rôle group:editors
dans Logto. Après s'être connecté, vérifiez le rôle de l'utilisateur dans WordPress pour s'assurer que la correspondance fonctionne correctement.
Conclusion
En intégrant Logto avec WordPress pour l'authentification et l'autorisation, vous pouvez améliorer la sécurité et la fonctionnalité de votre site. Souvenez-vous, si le code fourni ici est un exemple de base, vous devrez peut-être l'adapter pour correspondre à la structure de rôles et de permissions de votre site WordPress.