la_bloger/routes/web.php
2026-05-20 13:01:33 +02:00

46 lines
2.5 KiB
PHP

<?php
use App\Http\Controllers\Admin\AuthController;
use App\Http\Controllers\Admin\ChannelController;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\PostController as AdminPostController;
use App\Http\Controllers\Admin\PrefixController;
use App\Http\Controllers\Admin\TaxonomyTermController;
use App\Http\Controllers\Admin\UserController as AdminUserController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\PostController;
use App\Http\Controllers\TaxonomyController;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->name('admin.')->group(function () {
Route::get('login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('login', [AuthController::class, 'login'])->middleware('throttle:5,1');
Route::middleware('admin.auth')->group(function () {
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
Route::resource('posts', AdminPostController::class)->except(['show']);
Route::post('posts/{post}/duplicate', [AdminPostController::class, 'duplicate'])->name('posts.duplicate');
Route::resource('settings/channels', ChannelController::class)->names('settings.channels')->except(['show']);
Route::resource('settings/prefixes', PrefixController::class)->names('settings.prefixes')->only(['index', 'store', 'destroy']);
Route::resource('settings/users', AdminUserController::class)->names('settings.users')->except(['show']);
Route::resource('taxonomy', TaxonomyTermController::class)->names('taxonomy')->parameters(['taxonomy' => 'term'])->except(['show']);
Route::post('channel/activate', [ChannelController::class, 'activate'])->name('channel.activate');
});
});
Route::middleware('resolve.channel')->group(function () {
Route::get('/', [HomeController::class, 'index'])->name('home');
// Specific named routes before the catch-all
Route::get('sitemap.xml', [\App\Http\Controllers\SitemapController::class, 'index'])->name('sitemap');
Route::get('feed.xml', [\App\Http\Controllers\FeedController::class, 'index'])->name('feed');
// Taxonomy: /{taxonomy_prefix}/{term-slug}
// Post index: /{prefix}
// Post show: /{prefix}/{slug}
// All resolved dynamically in controllers based on channel's prefixes
Route::get('{prefix}/{slug}', [PostController::class, 'show'])->name('post.show');
Route::get('{prefix}', [PostController::class, 'index'])->name('post.index');
});