feat: Provisionner automatiquement un nouvel établissement
Lorsqu'un super-admin crée un établissement via l'interface, le système doit automatiquement créer la base tenant, exécuter les migrations, créer le premier utilisateur admin et envoyer l'invitation — le tout de manière asynchrone pour ne pas bloquer la réponse HTTP. Ce mécanisme rend chaque établissement opérationnel dès sa création sans intervention manuelle sur l'infrastructure.
This commit is contained in:
@@ -247,12 +247,20 @@ services:
|
||||
$homeworkSanitizer: '@html_sanitizer.sanitizer.homework_sanitizer'
|
||||
|
||||
App\Scolarite\Application\Port\FileStorage:
|
||||
alias: App\Scolarite\Infrastructure\Storage\LocalFileStorage
|
||||
alias: App\Scolarite\Infrastructure\Storage\S3FileStorage
|
||||
|
||||
App\Scolarite\Infrastructure\Storage\LocalFileStorage:
|
||||
arguments:
|
||||
$storagePath: '%kernel.project_dir%/var/storage'
|
||||
|
||||
App\Scolarite\Infrastructure\Storage\S3FileStorage:
|
||||
arguments:
|
||||
$endpoint: '%env(S3_ENDPOINT)%'
|
||||
$bucket: '%env(S3_BUCKET)%'
|
||||
$key: '%env(S3_KEY)%'
|
||||
$secret: '%env(S3_SECRET)%'
|
||||
$region: '%env(S3_REGION)%'
|
||||
|
||||
# Schedule (Story 4.1 - Emploi du temps)
|
||||
App\Scolarite\Domain\Repository\ScheduleSlotRepository:
|
||||
alias: App\Scolarite\Infrastructure\Persistence\Doctrine\DoctrineScheduleSlotRepository
|
||||
@@ -333,6 +341,23 @@ services:
|
||||
App\SuperAdmin\Domain\Repository\EstablishmentRepository:
|
||||
alias: App\SuperAdmin\Infrastructure\Persistence\Doctrine\DoctrineEstablishmentRepository
|
||||
|
||||
# Provisioning (Story 2.17 - Provisioning automatique)
|
||||
App\SuperAdmin\Infrastructure\Provisioning\TenantDatabaseCreator:
|
||||
arguments:
|
||||
$connection: '@doctrine.dbal.master_connection'
|
||||
|
||||
App\SuperAdmin\Infrastructure\Provisioning\TenantMigrator:
|
||||
arguments:
|
||||
$projectDir: '%kernel.project_dir%'
|
||||
$masterDatabaseUrl: '%env(DATABASE_URL)%'
|
||||
|
||||
App\SuperAdmin\Application\Port\TenantProvisioner:
|
||||
alias: App\SuperAdmin\Infrastructure\Provisioning\DatabaseTenantProvisioner
|
||||
|
||||
App\SuperAdmin\Infrastructure\Provisioning\ProvisionEstablishmentHandler:
|
||||
arguments:
|
||||
$masterDatabaseUrl: '%env(DATABASE_URL)%'
|
||||
|
||||
# School Calendar Repository (Story 2.11 - Calendrier scolaire)
|
||||
App\Administration\Domain\Model\SchoolCalendar\SchoolCalendarRepository:
|
||||
alias: App\Administration\Infrastructure\Persistence\Doctrine\DoctrineSchoolCalendarRepository
|
||||
|
||||
Reference in New Issue
Block a user