fix(tenant): route runtime traffic to tenant databases
Wire Doctrine's default connection to the tenant database resolved from the subdomain for HTTP requests and tenant-scoped Messenger messages while keeping master-only services on the master connection. This removes the production inconsistency where demo data, migrations and tenant commands used the tenant database but the web runtime still read from master.
This commit is contained in:
@@ -52,6 +52,12 @@ services:
|
||||
arguments:
|
||||
$baseDomain: '%tenant.base_domain%'
|
||||
|
||||
App\Shared\Infrastructure\Persistence\Doctrine\TenantAwareConnection:
|
||||
alias: doctrine.dbal.default_connection
|
||||
|
||||
App\Shared\Infrastructure\Tenant\TenantDatabaseSwitcher:
|
||||
alias: doctrine.dbal.default_connection
|
||||
|
||||
# TenantRegistry est configuré par environnement :
|
||||
# - dev: config/packages/dev/tenant.yaml (tenants de test)
|
||||
# - prod: à configurer via admin ou env vars
|
||||
@@ -116,8 +122,21 @@ services:
|
||||
|
||||
App\Shared\Infrastructure\Audit\AuditLogger:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
$appSecret: '%env(APP_SECRET)%'
|
||||
|
||||
App\Shared\Infrastructure\Audit\AuditLogRepository:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
App\Shared\Infrastructure\Console\ArchiveAuditLogsCommand:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
App\Shared\Infrastructure\Console\ReviewFailedMessagesCommand:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
# Audit log handlers (use AuditLogger to write to database)
|
||||
App\Shared\Infrastructure\Audit\Handler\AuditAuthenticationHandler:
|
||||
arguments:
|
||||
@@ -132,6 +151,18 @@ services:
|
||||
arguments:
|
||||
$userRepository: '@App\Administration\Domain\Repository\UserRepository'
|
||||
|
||||
App\SuperAdmin\Infrastructure\Persistence\Doctrine\DoctrineSuperAdminRepository:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
App\SuperAdmin\Infrastructure\Persistence\Doctrine\DoctrineEstablishmentRepository:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
App\SuperAdmin\Application\Query\GetEstablishmentsMetrics\GetEstablishmentsMetricsHandler:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
# Refresh Token Repository
|
||||
App\Administration\Domain\Repository\RefreshTokenRepository:
|
||||
alias: App\Administration\Infrastructure\Persistence\Redis\RedisRefreshTokenRepository
|
||||
@@ -346,6 +377,7 @@ services:
|
||||
# Infrastructure Health Checker - shared service for health checks (DRY)
|
||||
App\Shared\Infrastructure\Monitoring\InfrastructureHealthChecker:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
$redisUrl: '%env(REDIS_URL)%'
|
||||
|
||||
# Interface alias for InfrastructureHealthChecker (allows testing with stubs)
|
||||
|
||||
Reference in New Issue
Block a user