Multi-tenant
Le modèle multi-tenant est volontairement séparé en trois concepts.
| Concept | Rôle |
|---|---|
Account | Identité globale d’un utilisateur. Porte le rôle plateforme. |
Tenant | Organisation, école ou espace de travail. |
TenantMembership | Lien 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é.