Une application SaaS éducative nécessite une séparation stricte des données entre établissements scolaires. L'architecture multi-tenant par sous-domaine (ecole-alpha.classeo.local) permet cette isolation tout en utilisant une base de code unique. Le choix d'une résolution basée sur les sous-domaines plutôt que sur des headers ou tokens facilite le routage au niveau infrastructure (reverse proxy) et offre une UX plus naturelle où chaque école accède à "son" URL dédiée.
20 lines
878 B
YAML
20 lines
878 B
YAML
# Configuration des tenants en production
|
|
#
|
|
# En production, les tenants peuvent être configurés de deux façons :
|
|
# 1. Via la variable d'environnement TENANT_CONFIGS (JSON)
|
|
# 2. Via une implémentation DatabaseTenantRegistry (à implémenter)
|
|
#
|
|
# Pour l'instant, on utilise InMemoryTenantRegistry avec configuration env.
|
|
# Si aucun tenant n'est configuré, toutes les requêtes retourneront 404.
|
|
|
|
parameters:
|
|
# Format JSON attendu: [{"tenantId":"uuid","subdomain":"ecole","databaseUrl":"postgres://..."}]
|
|
tenant.prod_configs_json: '%env(default::TENANT_CONFIGS)%'
|
|
|
|
services:
|
|
App\Shared\Infrastructure\Tenant\TenantRegistry:
|
|
class: App\Shared\Infrastructure\Tenant\InMemoryTenantRegistry
|
|
factory: ['@App\Shared\Infrastructure\Tenant\TenantRegistryFactory', 'createFromEnv']
|
|
arguments:
|
|
$configsJson: '%tenant.prod_configs_json%'
|