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.
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).
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.
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.
Avant de commencer, assurez-vous d'avoir ce qui suit :
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 :
functions.php de votre thèmeOuvrez 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.
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.
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 sous openid-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 fonction logto_handler à l'action wp_login, qui se déclenche après qu'un utilisateur se soit connecté. Le 10 est la priorité (par défaut), et le 2 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.
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.
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.