From 446eb15c6ba0b9d35ab1d7cc5bcd9e49ffd1ef6e Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Thu, 22 Jan 2026 15:03:05 +0100 Subject: [PATCH] Fix blog post image upload storage --- app/Filament/Blog/Resources/PostResource.php | 3 +- app/Models/BlogPost.php | 9 +++-- tests/Unit/BlogPostBannerUrlTest.php | 36 ++++++++++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 tests/Unit/BlogPostBannerUrlTest.php diff --git a/app/Filament/Blog/Resources/PostResource.php b/app/Filament/Blog/Resources/PostResource.php index 857d795..338c22d 100644 --- a/app/Filament/Blog/Resources/PostResource.php +++ b/app/Filament/Blog/Resources/PostResource.php @@ -121,9 +121,10 @@ class PostResource extends Resource ->unique(BlogPost::class, 'slug', ignoreRecord: true) ->maxLength(255) ->columnSpanFull(), - FileUpload::make('featured_image') + FileUpload::make('banner') ->label('Featured Image') ->image() + ->disk('public') ->directory('blog') ->visibility('public'), Select::make('blog_category_id') diff --git a/app/Models/BlogPost.php b/app/Models/BlogPost.php index 0508f0e..6d58bc1 100644 --- a/app/Models/BlogPost.php +++ b/app/Models/BlogPost.php @@ -63,12 +63,11 @@ class BlogPost extends Model } $path = ltrim($this->banner, '/'); + if (str_starts_with($path, 'storage/')) { + $path = substr($path, strlen('storage/')); + } - return \URL::temporarySignedRoute( - 'api.v1.branding.asset', - now()->addMinutes(30), - ['path' => $path] - ); + return \Storage::disk('public')->url($path); }); } diff --git a/tests/Unit/BlogPostBannerUrlTest.php b/tests/Unit/BlogPostBannerUrlTest.php new file mode 100644 index 0000000..2a40ffa --- /dev/null +++ b/tests/Unit/BlogPostBannerUrlTest.php @@ -0,0 +1,36 @@ + 'https://example.test']); + + $post = new BlogPost; + $post->banner = 'blog/test.jpg'; + + $this->assertSame( + Storage::disk('public')->url('blog/test.jpg'), + $post->banner_url + ); + } + + public function test_banner_url_strips_storage_prefix(): void + { + config(['app.url' => 'https://example.test']); + + $post = new BlogPost; + $post->banner = 'storage/blog/test.jpg'; + + $this->assertSame( + Storage::disk('public')->url('blog/test.jpg'), + $post->banner_url + ); + } +}