From 3c31baf20d185fed02a7189acc2ee41c6d04cc18 Mon Sep 17 00:00:00 2001 From: Corey Salzano <938411+csalzano@users.noreply.github.com> Date: Tue, 17 Mar 2026 19:32:40 -0400 Subject: [PATCH 1/3] fix(backup): remote disk backups never appear in backup listing Three bugs prevented backups stored on remote disks (Dropbox, S3, etc.) from ever appearing in the Settings > Backup listing: 1. Typo in BackupSetting.vue: `filed_disk_id` was sent to the API instead of `file_disk_id`, so the backend never received the selected disk ID and always fell back to the local filesystem. 2. Wrong default disk selection in loadDisksData(): `set_as_default == 0` selected the first disk that is NOT default (local_public), instead of the disk that IS default. Changed to `set_as_default == 1` with a fallback to the first disk. 3. BackupsController::index() did not call setConfig() on the FileDisk before querying backups, so even when the correct file_disk_id arrived it still read from the default local filesystem. Added the same disk bootstrap logic already present in CreateBackupJob and destroy(). Made-with: Cursor --- .../Controllers/V1/Admin/Backup/BackupsController.php | 10 ++++++++++ .../scripts/admin/views/settings/BackupSetting.vue | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php index 3a8daa94..02a7c79c 100644 --- a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php +++ b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php @@ -27,6 +27,16 @@ class BackupsController extends ApiController $configuredBackupDisks = config('backup.backup.destination.disks'); try { + if ($request->file_disk_id) { + $fileDisk = \App\Models\FileDisk::find($request->file_disk_id); + if ($fileDisk) { + $fileDisk->setConfig(); + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + config(['backup.backup.destination.disks' => [$prefix.$fileDisk->driver]]); + $configuredBackupDisks = config('backup.backup.destination.disks'); + } + } + $backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name')); $backups = Cache::remember("backups-{$request->file_disk_id}", now()->addSeconds(4), function () use ($backupDestination) { diff --git a/resources/scripts/admin/views/settings/BackupSetting.vue b/resources/scripts/admin/views/settings/BackupSetting.vue index 9852c979..9cc3d56f 100644 --- a/resources/scripts/admin/views/settings/BackupSetting.vue +++ b/resources/scripts/admin/views/settings/BackupSetting.vue @@ -167,14 +167,14 @@ async function loadDisksData() { let res = await diskStore.fetchDisks({ limit: 'all' }) if (res.data.error) { } - filters.selected_disk = res.data.data.find((disk) => disk.set_as_default == 0) + filters.selected_disk = res.data.data.find((disk) => disk.set_as_default == 1) ?? res.data.data[0] isFetchingInitialData.value = false } async function fetchBackupsData({ page, filter, sort }) { let data = { disk: filters.selected_disk.driver, - filed_disk_id: filters.selected_disk.id, + file_disk_id: filters.selected_disk.id, } isFetchingInitialData.value = true From aafcf147cfae517e9649220605457c1f9a606f53 Mon Sep 17 00:00:00 2001 From: Corey Salzano <938411+csalzano@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:00:47 -0400 Subject: [PATCH 2/3] Updates the "create backup" test to handle the disk prefix. --- tests/Feature/Admin/BackupTest.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Feature/Admin/BackupTest.php b/tests/Feature/Admin/BackupTest.php index fcfd4b80..aa5308a6 100644 --- a/tests/Feature/Admin/BackupTest.php +++ b/tests/Feature/Admin/BackupTest.php @@ -50,9 +50,11 @@ test('create backup', function () { $response = getJson("/api/v1/backups?disk={$disk->driver}&&file_disk_id={$disk->id}"); + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + $response->assertStatus(200)->assertJson([ 'disks' => [ - 'local', + $prefix.$disk->driver, ], ]); }); From 14b5aaa0c963183bcdaf1e351c09e4028155987a Mon Sep 17 00:00:00 2001 From: Corey Salzano <938411+csalzano@users.noreply.github.com> Date: Wed, 25 Mar 2026 09:09:33 -0400 Subject: [PATCH 3/3] Runs pint --- app/Http/Controllers/V1/Admin/Backup/BackupsController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php index 02a7c79c..5ac80f82 100644 --- a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php +++ b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V1\Admin\Backup; use App\Jobs\CreateBackupJob; +use App\Models\FileDisk; use App\Rules\Backup\PathToZip; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -28,7 +29,7 @@ class BackupsController extends ApiController try { if ($request->file_disk_id) { - $fileDisk = \App\Models\FileDisk::find($request->file_disk_id); + $fileDisk = FileDisk::find($request->file_disk_id); if ($fileDisk) { $fileDisk->setConfig(); $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_');