Skip to Content

Organisations B2B Multi-Tenant

Le système Organizations active la multi-tenancy B2B dans Auris. Chaque organisation représente une entité cliente — une entreprise, une équipe ou tout regroupement logique — qui possède un ensemble d’utilisateurs membres, a ses propres assignations de rôles et peut configurer son propre fournisseur SSO enterprise. Les organisations sont indépendantes les unes des autres : le rôle d’un utilisateur dans l’Organisation A n’a aucune influence sur son accès dans l’Organisation B.

Ce modèle est conçu pour les produits SaaS qui vendent aux entreprises : ton seul tenant Auris héberge plusieurs organisations clientes, chacune avec une gestion des membres et un contrôle d’accès isolés.


Concepts de Base

Organisation : Une entité avec un nom et un slug unique. Les organisations ont des métadonnées, un nom d’affichage et des paramètres. Elles appartiennent toujours à exactement un utilisateur (l’OWNER).

Membre de l’Organisation : Un utilisateur qui appartient à une organisation avec l’un des quatre rôles : OWNER, ADMIN, MEMBER ou VIEWER.

Invitation : Une invitation basée sur un token avec expiration temporelle qui permet à un utilisateur (ou une adresse e-mail pas encore enregistrée) de rejoindre une organisation avec un rôle spécifié.

SSO par Organisation : Chaque organisation peut configurer son propre fournisseur d’identité SAML 2.0 ou OIDC. Quand un utilisateur se connecte avec une e-mail correspondant à un domaine vérifié, Auris le redirige automatiquement vers l’IdP de son organisation. Voir Enterprise SSO.


Création des Organisations

Les organisations peuvent être créées par tout utilisateur avec la permission appropriée, ou programmatiquement via le SDK de Management.

POST/api/organizationsRequires: manage:organizations

Crée une nouvelle organisation. L’utilisateur qui la crée est automatiquement assigné au rôle OWNER.

Corps de la requête :

{ "name": "Acme Corporation", "displayName": "Acme Corp", "slug": "acme-corp", "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042" } }

Référence des champs :

ChampTypeObligatoireNotes
namestring✅Nom interne, unique par tenant
displayNamestringNonNom affiché dans l’interface utilisateur
slugstringNonIdentifiant URL-safe, généré automatiquement depuis name si omis
metadataobjectNonJSON arbitraire pour les données spécifiques à l’application
GET/api/organizationsRequires: view:organizations

Retourne une liste paginée de toutes les organisations du tenant. Supporte les paramètres de requête search et page/limit.

GET/api/organizations/[id]Requires: view:organizations

Retourne l’enregistrement de l’organisation incluant le compteur de membres et les paramètres de base.

PATCH/api/organizations/[id]Requires: manage:organizations

Met à jour les champs de l’organisation. Tous les champs sont optionnels — seuls les champs fournis sont mis à jour.

DELETE/api/organizations/[id]Requires: manage:organizations

Supprime l’organisation. Les membres perdent les assignations de rôle au niveau organisation. Les comptes utilisateur Auris sous-jacents ne sont pas modifiés.


Rôles des Membres

Les organisations utilisent un système de rôles hiérarchiques à quatre niveaux. Les rôles plus élevés héritent de toutes les capacités des rôles inférieurs.

RôleCapacités
OWNERContrôle total. Peut gérer tous les paramètres, membres, SSO et facturation. Il y a toujours exactement un OWNER. L’OWNER ne peut pas être retiré par un autre OWNER — la propriété doit être transférée d’abord.
ADMINPeut gérer les membres (ajouter, retirer, changer les rôles jusqu’à ADMIN). Peut configurer le SSO et les paramètres de l’organisation. Ne peut pas supprimer l’organisation.
MEMBERAccès standard. Les attributions de rôles sont définies par l’application — Auris n’impose pas de restrictions sur les ressources à ce niveau au-delà de ce que ton application applique.
VIEWERAccès en lecture seule. Peut voir les membres et les paramètres de l’organisation mais ne peut pas apporter de modifications.

Auris applique la hiérarchie des rôles au niveau API. Un ADMIN ne peut pas assigner le rôle OWNER à un autre utilisateur — le transfert de propriété nécessite un appel API séparé de la part de l’OWNER courant.


Gestion des Membres

GET/api/organizations/[id]/membersRequires: view:organizations

Retourne la liste paginée des membres de l’organisation, incluant les détails de l’utilisateur et son rôle dans l’organisation.

Réponse :

{ "data": [ { "userId": "usr_01HX...", "email": "[email protected]", "firstName": "Alice", "lastName": "Martin", "role": "ADMIN", "joinedAt": "2025-01-15T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 12, "totalPages": 1 } }
POST/api/organizations/[id]/membersRequires: manage:organizations

Ajoute directement un utilisateur (via userId) à l’organisation avec un rôle spécifié. L’utilisateur doit déjà exister dans Auris.

{ "userId": "usr_01HX...", "role": "MEMBER" }
PATCH/api/organizations/[id]/members/[userId]Requires: manage:organizations

Met à jour le rôle du membre dans l’organisation.

DELETE/api/organizations/[id]/members/[userId]Requires: manage:organizations

Retire l’utilisateur de l’organisation. Le compte Auris de l’utilisateur n’est pas supprimé ni désactivé.


Invitations

Les invitations permettent d’ajouter des utilisateurs à une organisation via e-mail, même s’ils n’ont pas encore de compte Auris. Le flux d’invitation :

  1. Un ADMIN ou OWNER envoie une invitation à une adresse e-mail.
  2. Auris génère un token unique avec expiration et envoie un e-mail avec un lien d’acceptation.
  3. L’invité clique le lien. S’il a déjà un compte Auris, il est ajouté immédiatement à l’organisation. Sinon, il est invité à créer un compte, après quoi l’invitation est acceptée.
  4. Les invitations expirent après 7 jours si elles ne sont pas acceptées.
POST/api/organizations/[id]/invitationsRequires: manage:organizations

Crée et envoie une invitation à une adresse e-mail.

{ "email": "[email protected]", "role": "MEMBER", "message": "Tu as été invité à rejoindre Acme Corp sur notre plateforme." }
GET/api/organizations/[id]/invitationsRequires: manage:organizations

Liste toutes les invitations en attente, acceptées et expirées pour l’organisation.

DELETE/api/organizations/[id]/invitations/[invitationId]Requires: manage:organizations

Annule une invitation en attente. Les invitations expirées ne peuvent pas être acceptées mais n’ont pas besoin d’être annulées manuellement.

États des invitations :

ÉtatSignification
PENDINGEnvoyée et en attente d’acceptation
ACCEPTEDL’utilisateur a accepté et est maintenant membre
EXPIREDLa période de 7 jours est passée sans acceptation
CANCELLEDAnnulée manuellement par un ADMIN ou OWNER

Utilisation avec le SDK

import { useOrganization } from '@auris/react' function OrgDashboard() { // Retourne le contexte de l'organisation depuis la session de l'utilisateur authentifié. // L'organisation est dérivée des claims du token d'accès. const { organization, members, isLoading } = useOrganization() if (isLoading) return <div>Chargement...</div> if (!organization) return <div>Aucune organisation</div> return ( <div> <h1>{organization.displayName}</h1> <p>Membres : {members.length}</p> <ul> {members.map((member) => ( <li key={member.userId}> {member.email} — {member.role} </li> ))} </ul> </div> ) }

Métadonnées de l’Organisation

Comme les utilisateurs, les organisations supportent des métadonnées JSON arbitraires. Utilise-les pour stocker des données spécifiques à l’application avec l’enregistrement de l’organisation sans migrations de schéma.

{ "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042", "maxSeats": 250, "billingEmail": "[email protected]", "features": ["advanced-analytics", "custom-domains", "audit-export"] } }

Les métadonnées sont retournées dans chaque réponse API d’organisation et accessibles dans le SDK de Management.


Cas d’Usage

Multi-tenancy SaaS : Chacun de tes clients est une organisation. Ton application lit l’organisation de l’utilisateur depuis son JWT ou sa session et limite toutes les requêtes aux données de cette organisation. Les nouveaux clients sont onboardés en créant une organisation et en invitant leur administrateur.

Onboarding clients enterprise : Crée l’organisation, ajoute l’administrateur IT du client comme OWNER et laisse-le gérer ses propres utilisateurs et configurer son propre SSO d’entreprise. Ton équipe maintient la visibilité au niveau tenant via la Console Admin.

Solutions white-label : Chaque organisation cliente peut configurer son propre SSO, la vérification de domaine et le nom d’affichage. La page Hosted Login s’adapte au branding par organisation quand l’e-mail d’un utilisateur correspond à un domaine vérifié.

Équipes de produit internes : Sépare les lignes de produits ou business units en organisations distinctes pour une gestion isolée des rôles, sans maintenir des instances tenant Auris séparées.


Permissions Requises

OpérationPermission
Voir / obtenir des organisationsview:organizations
Créer / mettre à jour / supprimer des organisationsmanage:organizations
Gérer les membresmanage:organizations
Envoyer / annuler des invitationsmanage:organizations

Pages Associées