Inviter des membres de l'organisation
En tant qu'application multi-organisation, une exigence courante 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 les organisations 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
- Accès en suppression à toutes les 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 la Logto Admin Console. Vous pouvez également utiliser le Logto Management API pour créer des rôles d'organisation de manière programmatique.
Configurer votre connecteur de messagerie
Étant donné que les invitations sont envoyées par e-mail, assurez-vous que votre connecteur de messagerie est correctement configuré. Pour envoyer des invitations, vous devez configurer un nouveau type d'utilisation de modèle d'e-mail - OrganizationInvitation
.
note
Le "service de messagerie Logto" intégré de Logto Cloud ne prend pas en charge le type d'utilisation OrganizationInvitation
pour le moment. Au lieu de cela, vous devez configurer votre connecteur de messagerie (par exemple, Sendgrid) et configurer le modèle OrganizationInvitation
.
Un exemple de modèle d'e-mail pour le type d'utilisation OrganizationInvitation
est montré 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'e-mail sera remplacé par le lien d'invitation réel lors de l'envoi de l'e-mail. Dans ce guide, disons qu'il serait https://your-app.com/invitation/accept/{your-invitation-id}
.
Vous pouvez consulter le guide Configurer un service de messagerie populaire pour plus de détails sur la configuration des connecteurs de messagerie.
Gérer les invitations avec Logto Management API
note
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 de Management APIs liés aux 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 e-mail. 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 :En conséquence, vous devez implémenter une page d'accueil lorsque votre invité navigue à travers le lien d'invitation vers votre application.{
"link": "https://your-app.com/invitation/accept/{your-invitation-id}"
}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 e-mail, 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 devraient 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 admin à un membre non-admin 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 reflétées immédiatement 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 reflétées immédiatement.
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 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 utilisateur 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.