46 lines
2.5 KiB
PHP
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');
|
|
});
|