From 56899eb656715e63c1b3b2bbf9c1e8c1328e2b3b Mon Sep 17 00:00:00 2001 From: smarcet Date: Sun, 11 Oct 2026 16:12:53 -0300 Subject: [PATCH 1/2] fix(imports): make temporary csv import storage configurable (swift | s3) Ticket, event, registration company and selection plan member imports were hard bound to the swift storage strategies. Add FILESYSTEMS_IMPORTS_STORAGE (default swift) so an environment without a working swift backend can use the s3 disk instead. --- .env.example | 2 ++ app/Services/ModelServicesProvider.php | 19 +++++++++++++------ config/filesystems.php | 4 +++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 5e3de28506..a3a6c0f527 100644 --- a/.env.example +++ b/.env.example @@ -84,6 +84,8 @@ CLOUD_STORAGE_REGION= CLOUD_STORAGE_ASSETS_CONTAINER= CLOUD_STORAGE_IMAGES_CONTAINER= CLOUD_STORAGE_MEDIA_UPLOADS_CONTAINER= +# storage for temporary CSV import files: swift (default) | s3 ( uses the s3 disk, AWS_* vars ) +FILESYSTEMS_IMPORTS_STORAGE=swift # enable/disable cal sync background task ENABLE_CAL_SYNC=true # enable/disable bookable rooms reservation revocation task diff --git a/app/Services/ModelServicesProvider.php b/app/Services/ModelServicesProvider.php index 27926fda6b..ab76d5c04b 100644 --- a/app/Services/ModelServicesProvider.php +++ b/app/Services/ModelServicesProvider.php @@ -21,6 +21,8 @@ use App\Services\FilePostProcessorService; use App\Services\FileSystem\IFileDownloadStrategy; use App\Services\FileSystem\IFileUploadStrategy; +use App\Services\FileSystem\S3\S3StorageFileDownloadStrategy; +use App\Services\FileSystem\S3\S3StorageFileUploadStrategy; use App\Services\FileSystem\Swift\SwiftStorageFileDownloadStrategy; use App\Services\FileSystem\Swift\SwiftStorageFileUploadStrategy; use App\Services\ISummitRSVPInvitationService; @@ -177,14 +179,19 @@ public function boot() public function register() { - App::when(SummitService::class)->needs(IFileDownloadStrategy::class)->give(SwiftStorageFileDownloadStrategy::class); - App::when(SummitService::class)->needs(IFileUploadStrategy::class)->give(SwiftStorageFileUploadStrategy::class); + // temporary CSV import files ( save -> queued job reads -> delete ) + $use_s3_for_imports = config('filesystems.imports_storage') === 's3'; + $imports_download_strategy = $use_s3_for_imports ? S3StorageFileDownloadStrategy::class : SwiftStorageFileDownloadStrategy::class; + $imports_upload_strategy = $use_s3_for_imports ? S3StorageFileUploadStrategy::class : SwiftStorageFileUploadStrategy::class; - App::when(SummitOrderService::class)->needs(IFileDownloadStrategy::class)->give(SwiftStorageFileDownloadStrategy::class); - App::when(SummitOrderService::class)->needs(IFileUploadStrategy::class)->give(SwiftStorageFileUploadStrategy::class); + App::when(SummitService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); + App::when(SummitService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); - App::when(SummitSelectionPlanService::class)->needs(IFileDownloadStrategy::class)->give(SwiftStorageFileDownloadStrategy::class); - App::when(SummitSelectionPlanService::class)->needs(IFileUploadStrategy::class)->give(SwiftStorageFileUploadStrategy::class); + App::when(SummitOrderService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); + App::when(SummitOrderService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); + + App::when(SummitSelectionPlanService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); + App::when(SummitSelectionPlanService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); // add bindings for service App::singleton(ISummitService::class, SummitService::class); diff --git a/config/filesystems.php b/config/filesystems.php index a5aca0791b..45623c7f1b 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -131,5 +131,7 @@ ], 'assets_disk' => env('FILESYSTEMS_ASSETS_DISK', 'assets'), - 'static_images_disk' => env('FILESYSTEMS_STATIC_IMAGES_DISK', 'static_images') + 'static_images_disk' => env('FILESYSTEMS_STATIC_IMAGES_DISK', 'static_images'), + // storage for temporary CSV import files ( tickets, events, registration companies, selection plan members ): swift | s3 + 'imports_storage' => env('FILESYSTEMS_IMPORTS_STORAGE', 'swift'), ]; From 81c4e5e4d72d4a8f0ba6dfbaea6135fd347a2a25 Mon Sep 17 00:00:00 2001 From: smarcet Date: Sun, 11 Oct 2026 16:16:38 -0300 Subject: [PATCH 2/2] fix(imports): always use s3 storage for temporary csv imports Drop the FILESYSTEMS_IMPORTS_STORAGE switch: ticket, event, registration company and selection plan member imports are bound to the s3 strategies unconditionally. --- .env.example | 2 -- app/Services/ModelServicesProvider.php | 19 ++++++------------- config/filesystems.php | 4 +--- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/.env.example b/.env.example index a3a6c0f527..5e3de28506 100644 --- a/.env.example +++ b/.env.example @@ -84,8 +84,6 @@ CLOUD_STORAGE_REGION= CLOUD_STORAGE_ASSETS_CONTAINER= CLOUD_STORAGE_IMAGES_CONTAINER= CLOUD_STORAGE_MEDIA_UPLOADS_CONTAINER= -# storage for temporary CSV import files: swift (default) | s3 ( uses the s3 disk, AWS_* vars ) -FILESYSTEMS_IMPORTS_STORAGE=swift # enable/disable cal sync background task ENABLE_CAL_SYNC=true # enable/disable bookable rooms reservation revocation task diff --git a/app/Services/ModelServicesProvider.php b/app/Services/ModelServicesProvider.php index ab76d5c04b..ead1173d78 100644 --- a/app/Services/ModelServicesProvider.php +++ b/app/Services/ModelServicesProvider.php @@ -23,8 +23,6 @@ use App\Services\FileSystem\IFileUploadStrategy; use App\Services\FileSystem\S3\S3StorageFileDownloadStrategy; use App\Services\FileSystem\S3\S3StorageFileUploadStrategy; -use App\Services\FileSystem\Swift\SwiftStorageFileDownloadStrategy; -use App\Services\FileSystem\Swift\SwiftStorageFileUploadStrategy; use App\Services\ISummitRSVPInvitationService; use App\Services\Model\AllowedEmailDomainsLookupBuilder; use App\Services\Model\AttendeeService; @@ -179,19 +177,14 @@ public function boot() public function register() { - // temporary CSV import files ( save -> queued job reads -> delete ) - $use_s3_for_imports = config('filesystems.imports_storage') === 's3'; - $imports_download_strategy = $use_s3_for_imports ? S3StorageFileDownloadStrategy::class : SwiftStorageFileDownloadStrategy::class; - $imports_upload_strategy = $use_s3_for_imports ? S3StorageFileUploadStrategy::class : SwiftStorageFileUploadStrategy::class; + App::when(SummitService::class)->needs(IFileDownloadStrategy::class)->give(S3StorageFileDownloadStrategy::class); + App::when(SummitService::class)->needs(IFileUploadStrategy::class)->give(S3StorageFileUploadStrategy::class); - App::when(SummitService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); - App::when(SummitService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); + App::when(SummitOrderService::class)->needs(IFileDownloadStrategy::class)->give(S3StorageFileDownloadStrategy::class); + App::when(SummitOrderService::class)->needs(IFileUploadStrategy::class)->give(S3StorageFileUploadStrategy::class); - App::when(SummitOrderService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); - App::when(SummitOrderService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); - - App::when(SummitSelectionPlanService::class)->needs(IFileDownloadStrategy::class)->give($imports_download_strategy); - App::when(SummitSelectionPlanService::class)->needs(IFileUploadStrategy::class)->give($imports_upload_strategy); + App::when(SummitSelectionPlanService::class)->needs(IFileDownloadStrategy::class)->give(S3StorageFileDownloadStrategy::class); + App::when(SummitSelectionPlanService::class)->needs(IFileUploadStrategy::class)->give(S3StorageFileUploadStrategy::class); // add bindings for service App::singleton(ISummitService::class, SummitService::class); diff --git a/config/filesystems.php b/config/filesystems.php index 45623c7f1b..a5aca0791b 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -131,7 +131,5 @@ ], 'assets_disk' => env('FILESYSTEMS_ASSETS_DISK', 'assets'), - 'static_images_disk' => env('FILESYSTEMS_STATIC_IMAGES_DISK', 'static_images'), - // storage for temporary CSV import files ( tickets, events, registration companies, selection plan members ): swift | s3 - 'imports_storage' => env('FILESYSTEMS_IMPORTS_STORAGE', 'swift'), + 'static_images_disk' => env('FILESYSTEMS_STATIC_IMAGES_DISK', 'static_images') ];