Aller au contenu principal

Multi-tenant

Le modèle multi-tenant est volontairement séparé en trois concepts.

ConceptRôle
AccountIdentité globale d’un utilisateur. Porte le rôle plateforme.
TenantOrganisation, école ou espace de travail.
TenantMembershipLien entre un compte et un tenant. Porte le rôle dans ce tenant.

Tenant courant

La convention retenue est : le tenant courant est porté par l’URL, via le paramètre :tenantId.

Exemple :

GET /tenants/:tenantId/memberships
PATCH /tenants/modify/:tenantId

Le TenantContextGuard lit le paramètre de route tenantId, puis demande au TenantContextService de construire le contexte.

TenantContext

export interface TenantContext {
user: AuthenticatedUser;
tenants: TenantContextItem[];
currentTenant: TenantContextItem | null;
}

currentTenant est null lorsque :

  • la route ne contient pas de tenantId ;
  • l’utilisateur n’est membre d’aucun tenant actif correspondant ;
  • l’utilisateur possède plusieurs tenants et aucun tenant courant n’est sélectionné.