diff --git a/app/MediaUpload.php b/app/MediaUpload.php index d4c68220c..83326219a 100644 --- a/app/MediaUpload.php +++ b/app/MediaUpload.php @@ -13,12 +13,20 @@ class MediaUpload extends Model 'disk', ]; + /** + * New Nova uploads go to the main S3 disk. The resources bucket + * currently denies PutObject for the shared IAM user. + */ + protected $attributes = [ + 'disk' => 's3', + ]; + public function getResolvedUrlAttribute(): ?string { if (empty($this->file_path)) { return null; } - return Storage::disk($this->disk ?: 'resources')->url($this->file_path); + return Storage::disk($this->disk ?: 's3')->url($this->file_path); } } diff --git a/app/Nova/Actions/BulkUploadMediaFiles.php b/app/Nova/Actions/BulkUploadMediaFiles.php index 2dd8cb8bd..d575f0f1c 100644 --- a/app/Nova/Actions/BulkUploadMediaFiles.php +++ b/app/Nova/Actions/BulkUploadMediaFiles.php @@ -64,7 +64,7 @@ public function handle(ActionFields $fields, Collection $models) $safeBaseName = Str::slug($baseName) ?: 'upload-file'; $destination = 'nova/uploads/' . now()->format('Y/m'); $finalFileName = $safeBaseName . '-' . Str::random(8) . '.' . $extension; - $storedPath = $file->storeAs($destination, $finalFileName, 'resources'); + $storedPath = $file->storeAs($destination, $finalFileName, 's3'); if (!$storedPath) { $skipped++; @@ -74,7 +74,7 @@ public function handle(ActionFields $fields, Collection $models) MediaUpload::create([ 'title' => trim(str_replace(['-', '_'], ' ', $baseName)), 'file_path' => $storedPath, - 'disk' => 'resources', + 'disk' => 's3', ]); $uploaded++; diff --git a/app/Nova/MediaUpload.php b/app/Nova/MediaUpload.php index 494bde6a2..5623dcfea 100644 --- a/app/Nova/MediaUpload.php +++ b/app/Nova/MediaUpload.php @@ -47,12 +47,12 @@ public function fields(Request $request): array })->onlyOnIndex(), File::make('File', 'file_path') - ->disk('resources') + ->disk('s3') ->path('nova/uploads') ->prunable() ->creationRules('required') ->rules('required', 'max:51200', 'mimes:jpg,jpeg,png,gif,webp,svg,pdf,doc,docx,ppt,pptx,xls,xlsx,txt') - ->help('Uploads directly to S3 disk "resources" under folder "nova/uploads".'), + ->help('Uploads to the main S3 disk under folder "nova/uploads".'), Text::make('URL', function () { return $this->renderUrlWithCopy($this->resolved_url);