Inviter des membres de l'organisation
En tant qu'application multi-organisation, un besoin courant est d'inviter des membres dans votre organisation. Dans ce guide, nous vous expliquerons les étapes et les détails techniques pour implémenter cette fonctionnalité dans votre application.
Aperçu du flux
Le processus global est illustré dans le diagramme ci-dessous :
Créer des rôles d'organisation
Avant d'inviter des membres dans votre organisation, vous devez créer des rôles d'organisation. Consultez le guide Configurer le modèle d'organisation pour des instructions détaillées.
Dans ce guide, créons deux rôles d'organisation typiques : admin
et member
.
Le rôle admin
a un accès complet à toutes les ressources de l'organisation, tandis que le rôle member
a un accès limité. Par exemple, chaque rôle peut avoir un ensemble de permissions comme suit :
- Rôle
admin
:read:data
- Accès en lecture à toutes les ressources de données de l'organisation.write:data
- Accès en écriture à toutes les ressources de données de l'organisation.delete:data
- Suppression des ressources de données de l'organisation.invite:member
- Inviter des membres dans l'organisation.manage:member
- Gérer les membres de l'organisation.delete:member
- Supprimer des membres de l'organisation.
- Rôle
member
:read:data
- Accès en lecture à toutes les ressources de données de l'organisation.write:data
- Accès en écriture à toutes les ressources de données de l'organisation.invite:member
- Inviter des membres dans l'organisation.
Cela peut être fait facilement dans le Logto Console. Vous pouvez également utiliser le Logto Management API pour créer des rôles d'organisation de manière programmatique.
Configurer votre connecteur d'email
Étant donné que les invitations sont envoyées par email, assurez-vous que votre connecteur d'email est correctement configuré. Pour envoyer des invitations, vous devez configurer un type d'utilisation de modèle d'email nouvellement introduit - OrganizationInvitation
.
Un exemple de modèle d'email pour le type d'utilisation OrganizationInvitation
est présenté ci-dessous :
{
"subject": "Bienvenue dans mon organisation",
"content": "<p>Rejoignez mon organisation via ce <a href=\"{{link}}\" target=\"_blank\">lien</a>.</p>",
"usageType": "OrganizationInvitation",
"type": "text/html"
}
Le placeholder {{link}}
dans le contenu de l'email sera remplacé par le lien d'invitation réel lors de l'envoi de l'email. Dans ce guide, disons qu'il s'agirait de https://your-app.com/invitation/accept/{your-invitation-id}
.
Le "service d'email Logto" intégré de Logto Cloud ne prend pas en charge le type d'utilisation OrganizationInvitation
pour le moment. Vous devez donc configurer votre connecteur d'email (par exemple, Sendgrid) et configurer le modèle OrganizationInvitation
.
Gérer les invitations avec Logto Management API
Si vous n'avez pas encore configuré le Logto Management API, consultez Interagir avec Management API pour plus de détails.
Nous avons fourni un ensemble d'APIs de gestion des invitations dans la fonctionnalité des organisations. Avec ces APIs, vous pouvez :
-
POST /api/organization-invitations
créer une invitation d'organisation avec un rôle d'organisation assigné. -
POST /api/organization-invitations/{id}/message
envoyer l'invitation d'organisation à l'invité par email. Remarque : Cette charge utile de l'API prend en charge une propriétélink
, vous pouvez composer votre lien d'invitation basé sur l'ID de l'invitation. Par exemple :{
"link": "https://your-app.com/invitation/accept/{your-invitation-id}"
}En conséquence, vous devez implémenter une page d'accueil lorsque votre invité navigue via le lien d'invitation vers votre application.
-
GET /api/organization-invitations
&GET /api/organization-invitations/{id}
obtenir toutes vos invitations ou une invitation spécifique par ID. Sur votre page d'accueil, utilisez ces APIs pour lister toutes les invitations ou les détails d'une invitation qu'un utilisateur a reçue. -
PUT /api/organization-invitations/{id}/status
accepter ou rejeter l'invitation en mettant à jour le statut de l'invitation. Utilisez cette API pour gérer la réponse de l'utilisateur à l'invitation.
Veuillez noter que toutes les APIs listées ci-dessus nécessitent un "jeton d’organisation" valide. Consultez ce guide pour apprendre comment obtenir le jeton d’organisation.
Utiliser le contrôle d’accès basé sur les rôles (RBAC) de l'organisation pour gérer les permissions des utilisateurs
Avec les configurations ci-dessus, vous pouvez maintenant envoyer des invitations par email, et les invités peuvent rejoindre l'organisation avec le rôle assigné.
Les utilisateurs avec différents rôles d'organisation auront différentes portées (permissions) dans leurs jetons d’organisation. Ainsi, à la fois votre application cliente et vos services backend doivent vérifier ces portées pour déterminer les fonctionnalités visibles et les actions autorisées.
Gérer les mises à jour des portées dans les jetons d’organisation
Assurez-vous d'avoir intégré l'organisation avec votre application. Consultez le guide d'intégration pour plus de détails.
Gérer les mises à jour des portées dans les jetons d’organisation implique :
Révoquer les portées existantes
Par exemple, rétrograder un administrateur à un membre non-administrateur devrait supprimer des portées de l'utilisateur. Dans ce cas, vous pouvez simplement effacer le jeton d’organisation mis en cache et en obtenir un nouveau avec le jeton de rafraîchissement. Les portées réduites seront immédiatement reflétées dans le nouveau jeton d’organisation émis.
Accorder de nouvelles portées
Cela peut être divisé en deux scénarios :
Accorder de nouvelles portées déjà définies dans votre système d'authentification
Similaire à la révocation des portées, si la nouvelle portée accordée est déjà enregistrée auprès du serveur d'authentification, vous pouvez simplement émettre un nouveau jeton d’organisation, et les nouvelles portées seront immédiatement reflétées.
Accorder de nouvelles portées nouvellement introduites dans votre système d'authentification
Dans ce cas, vous devez déclencher un processus de reconnexion ou de re-consentement pour mettre à jour le jeton d’organisation de l'utilisateur. Par exemple, en appelant la méthode signIn
dans le Logto SDK.
En savoir plus sur l'émission d'un jeton d’organisation.
Implémenter la vérification des permissions en temps réel et mettre à jour le jeton d’organisation
Logto fournit Management API pour récupérer les permissions des utilisateurs en temps réel dans l'organisation.
GET /api/organizations/{id}/users/{userId}/scopes
(Références API)
Vous pouvez ensuite comparer les portées dans le jeton d’organisation de l'utilisateur avec les permissions en temps réel pour déterminer si l'utilisateur a été promu ou rétrogradé.
-
Si rétrogradé, vous pouvez simplement effacer le jeton d’organisation mis en cache et le SDK émettra automatiquement un nouveau avec les portées mises à jour.
const { clearAccessToken } = useLogto();
...
// Si les portées en temps réel récupérées ont moins de portées que les portées du jeton d’organisation
await clearAccessToken();Cela ne nécessite pas de processus de reconnexion ou de re-consentement. De nouveaux jetons d’organisation seront émis automatiquement par le Logto SDK.
-
Si une nouvelle portée est introduite dans votre système d'authentification, déclenchez un processus de reconnexion ou de re-consentement pour mettre à jour le jeton d’organisation de l'utilisateur. Prenons l'exemple du SDK React :
const { clearAllTokens, signIn } = useLogto();
...
// Si les portées en temps réel récupérées ont des portées nouvellement assignées que les portées du jeton d’organisation
await clearAllTokens();
signIn({
redirectUri: '<your-sign-in-redirect-uri>',
prompt: 'consent',
});Le code ci-dessus déclenchera une navigation de page vers l'écran de consentement et redirigera automatiquement vers votre application, avec des portées mises à jour dans le jeton d’organisation de l'utilisateur.
Ressources connexes
Comment nous implémentons la collaboration utilisateur dans une application multi-locataire