Définir les fonctionnalités de gestion des organisations
Avant de concevoir votre expérience d'organisation, listez les exigences clés pour votre application multi‑tenant. Ce chapitre met en avant quelques éléments essentiels à prendre en compte lors de la conception de cette expérience.
Définir le contrôle d’accès au sein des organisations
Dans ce scénario, au sein d'un tenant, les administrateurs d'organisation peuvent mettre à jour les rôles des utilisateurs, tandis que les membres réguliers ne le peuvent pas. (En revanche, la création d'une organisation est une action au niveau du système que tout utilisateur final peut effectuer dans une application SaaS multi‑tenant.) Pour prendre en charge ce niveau de contrôle d’accès granulaire, définissez les permissions et les rôles d'organisation afin que seuls les administrateurs puissent mettre à jour les rôles au sein d'une organisation.
Consultez le modèle d'organisation pour en savoir plus sur les rôles et permissions d'organisation.
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 des permissions telles que :
- 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 dans 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.
Vous pouvez faire cela facilement dans la Console Logto. La mise en place du contrôle d’accès est une étape clé de l’architecture de votre organisation (multi‑tenant).
Permettre aux utilisateurs de gérer eux-mêmes leurs organisations
Votre application peut également nécessiter plusieurs fonctionnalités de gestion. Pour les construire, utilisez le Management API de Logto. Ci-dessous, vous trouverez des fonctionnalités courantes et les endpoints API associés. Dans le prochain chapitre, nous verrons comment les implémenter étape par étape.
Autoriser les administrateurs et membres à inviter d'autres personnes
Les administrateurs comme les membres peuvent inviter d'autres personnes dans l'organisation. Voir Inviter des membres d'organisation pour plus de détails.
Les administrateurs peuvent modifier les rôles des membres
Les administrateurs peuvent modifier les rôles des autres membres. Ils peuvent également créer des rôles plus spécifiques pour l'organisation, tels que chef de département, chef de projet, coordinateur, etc. Implémentez cela avec ces Management API :
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/{userId}/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"organizationRoleIds":["admin"]}'
Ou de manière groupée :
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userIds":["userId1", "userId2"],"organizationRoleIds":["admin"]}'
Ajouter des bots à l'organisation
Vous pouvez également permettre aux administrateurs d'ajouter des bots à une organisation spécifique. Créez d'abord des applications machine à machine (M2M), puis ajoutez ces applications M2M aux organisations en tant que bots.
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botAppId"]}'
Vous pouvez ensuite attribuer des rôles d'organisation à ces bots.
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botApp1"],"organizationRoleIds":["botRoleId"]}'