Skip to content

Commit 802ebbe

Browse files
committed
add published_at guards
1 parent 7d5a86f commit 802ebbe

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

app/Http/Controllers/ShowBlogController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,19 @@ class ShowBlogController extends Controller
88
{
99
public function index()
1010
{
11+
$articles = Article::query()
12+
->published()
13+
->paginate(6);
14+
1115
return view('blog', [
12-
'articles' => Article::latest()->paginate(6),
16+
'articles' => $articles,
1317
]);
1418
}
1519

1620
public function show(Article $article)
1721
{
22+
abort_if($article->published_at->isFuture(), 404);
23+
1824
return view('article', [
1925
'article' => $article,
2026
]);

app/Models/Article.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ public function getRouteKeyName()
2222

2323
public function scopePublished(Builder $query): void
2424
{
25-
$query->whereDate('published_at', '<=', now());
25+
$query
26+
->orderByDesc('published_at')
27+
->where('published_at', '<=', now());
2628
}
2729

2830
public function author(): BelongsTo

routes/web.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22

3+
use App\Http\Controllers\ShowBlogController;
34
use App\Http\Controllers\ShowDocumentationController;
4-
use App\Models\Article;
55
use Illuminate\Support\Facades\Route;
66
use Illuminate\Support\Str;
77

@@ -22,8 +22,6 @@
2222
Route::redirect('/docs/desktop/1/getting-started/sponsoring', '/sponsor');
2323

2424
Route::view('/', 'welcome')->name('welcome');
25-
Route::view('/blog', 'blog')->name('blog');
26-
Route::view('/article', 'article')->name('article');
2725
Route::view('mobile', 'early-adopter')->name('early-adopter');
2826
Route::view('laracon-us-2025-giveaway', 'laracon-us-2025-giveaway')->name('laracon-us-2025-giveaway');
2927
Route::redirect('ios', 'mobile');
@@ -34,6 +32,9 @@
3432
Route::view('partners', 'partners')->name('partners');
3533
Route::view('sponsor', 'sponsoring')->name('sponsoring');
3634

35+
Route::get('blog', [ShowBlogController::class, 'index'])->name('blog');
36+
Route::get('blog/{article}', [ShowBlogController::class, 'show'])->name('article');
37+
3738
Route::redirect('/docs/{version}/{page?}', '/docs/mobile/{version}/{page?}')
3839
->where('page', '(.*)')
3940
->where('version', '[0-9]+');
@@ -62,9 +63,3 @@
6263
})->name('docs')->where('page', '.*');
6364

6465
Route::get('/order/{checkoutSessionId}', App\Livewire\OrderSuccess::class)->name('order.success');
65-
66-
Route::view('blog', 'blog', [
67-
'articles' => Article::latest()->paginate(6),
68-
])->name('blog');
69-
70-
Route::view('blog/{article}', 'article')->name('article');

0 commit comments

Comments
 (0)