40 lines
2.1 KiB
PHP
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);
|
|
});
|