name('home'); Route::get('/pages/{slug}', [Shop::class, 'page'])->name('page'); Route::get('/releases', [Shop::class, 'releases'])->name('releases'); Route::post('/consent', [Shop::class, 'consent'])->middleware('throttle:30,1')->name('consent'); Route::middleware(['auth', 'verified'])->group(function () { Route::get('/account', [Shop::class, 'account'])->name('account'); Route::view('/account/security', 'security')->middleware('password.confirm')->name('security'); Route::get('/support', fn () => view('support'))->name('support'); Route::post('/checkout', [PaddleController::class, 'checkout'])->middleware('throttle:10,1')->name('checkout'); Route::post('/account/apple', [Shop::class, 'apple'])->middleware('throttle:10,1')->name('apple.verify'); Route::get('/downloads/{release}', [Shop::class, 'downloadLink'])->name('download.link'); Route::get('/download/{release}/{user}', [Shop::class, 'download'])->middleware('signed')->name('download.file'); Route::get('/account/export', [Shop::class, 'export'])->middleware('password.confirm')->name('privacy.export'); Route::post('/account/deletion', [Shop::class, 'deletion'])->middleware('password.confirm')->name('privacy.delete'); Route::get('/admin', fn () => view('admin'))->middleware([RequireAdmin::class, 'password.confirm'])->name('admin'); }); Route::get('/media/{id}', function (int $id) { $file = DB::table('media')->find($id); abort_unless($file, 404); return Storage::disk('local')->response($file->path, null, ['Content-Type' => $file->mime, 'X-Content-Type-Options' => 'nosniff']); })->name('media'); Route::fallback(function (Request $r) { $redirect = DB::table('redirects')->where('source', '/'.$r->path())->first(); abort_unless($redirect, 404); return redirect($redirect->destination,301); });