Files

40 lines
2.1 KiB
PHP

<?php
use App\Http\Controllers\CommerceController as Shop;
use App\Http\Controllers\PaddleController;
use App\Http\Middleware\RequireAdmin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
Route::get('/', [Shop::class, 'home'])->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);
});