98 lines
4.9 KiB
PHP
98 lines
4.9 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\CheckoutController;
|
|
use App\Http\Controllers\CheckoutGoogleController;
|
|
use App\Http\Controllers\LegalPageController;
|
|
use App\Http\Controllers\LocaleController;
|
|
use App\Http\Controllers\MarketingController;
|
|
use App\Http\Controllers\PayPalController;
|
|
use App\Http\Controllers\PayPalWebhookController;
|
|
use App\Http\Controllers\Tenant\EventPhotoArchiveController;
|
|
use App\Models\Package;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Inertia\Inertia;
|
|
|
|
require __DIR__.'/auth.php';
|
|
require __DIR__.'/settings.php';
|
|
|
|
Route::get('/', [MarketingController::class, 'index'])->name('home');
|
|
Route::get('/dashboard', function () {
|
|
return Inertia::render('dashboard');
|
|
})->middleware(['auth', 'verified'])->name('dashboard');
|
|
Route::get('/contact', [MarketingController::class, 'contactView'])->name('contact');
|
|
Route::post('/contact', [MarketingController::class, 'contact'])->name('contact.submit');
|
|
|
|
// Legal pages
|
|
Route::get('/impressum', [LegalPageController::class, 'show'])
|
|
->name('impressum')
|
|
->defaults('slug', 'impressum');
|
|
Route::get('/datenschutz', [LegalPageController::class, 'show'])
|
|
->name('datenschutz')
|
|
->defaults('slug', 'datenschutz');
|
|
Route::get('/agb', [LegalPageController::class, 'show'])
|
|
->name('agb')
|
|
->defaults('slug', 'agb');
|
|
|
|
Route::get('/kontakt', function () {
|
|
return Inertia::render('marketing/Kontakt');
|
|
})->name('kontakt');
|
|
Route::post('/kontakt', [MarketingController::class, 'contact'])->name('kontakt.submit');
|
|
Route::get('/blog', [MarketingController::class, 'blogIndex'])->name('blog');
|
|
Route::get('/blog/{slug}', [MarketingController::class, 'blogShow'])->name('blog.show');
|
|
Route::get('/packages', [MarketingController::class, 'packagesIndex'])->name('packages');
|
|
Route::get('/anlaesse/{type}', [MarketingController::class, 'occasionsType'])->name('anlaesse.type');
|
|
Route::get('/success/{packageId?}', [MarketingController::class, 'success'])->name('marketing.success');
|
|
Route::prefix('event-admin')->group(function () {
|
|
$renderAdmin = fn () => view('admin');
|
|
|
|
Route::get('/auth/callback', $renderAdmin)->name('tenant.admin.auth.callback');
|
|
Route::get('/login', $renderAdmin)->name('tenant.admin.login');
|
|
Route::get('/logout', $renderAdmin)->name('tenant.admin.logout');
|
|
Route::get('/{view?}', $renderAdmin)
|
|
->where('view', '.*')
|
|
->name('tenant.admin.app');
|
|
});
|
|
Route::view('/event', 'guest')->name('guest.pwa.landing');
|
|
Route::view('/g/{token}', 'guest')->where('token', '.*')->name('guest.gallery');
|
|
Route::view('/e/{token}/{path?}', 'guest')
|
|
->where('token', '.*')
|
|
->where('path', '.*')
|
|
->name('guest.event');
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('/buy/{packageId}', [MarketingController::class, 'buyPackages'])->name('marketing.buy');
|
|
});
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('/tenant/events/{event}/photos/archive', EventPhotoArchiveController::class)
|
|
->name('tenant.events.photos.archive');
|
|
});
|
|
|
|
if (config('checkout.enabled')) {
|
|
Route::get('/purchase-wizard/{package}', [CheckoutController::class, 'show'])->name('purchase.wizard');
|
|
Route::get('/checkout/{package}', [CheckoutController::class, 'show'])->name('checkout.show');
|
|
} else {
|
|
Route::get('/purchase-wizard/{package}', function (Package $package) {
|
|
return redirect()->route('packages', ['highlight' => $package->slug]);
|
|
})->name('purchase.wizard');
|
|
|
|
Route::get('/checkout/{package}', function (Package $package) {
|
|
return redirect()->route('packages', ['highlight' => $package->slug]);
|
|
})->name('checkout.show');
|
|
}
|
|
Route::post('/checkout/login', [CheckoutController::class, 'login'])->name('checkout.login');
|
|
Route::post('/checkout/register', [CheckoutController::class, 'register'])->name('checkout.register');
|
|
Route::get('/checkout/auth/google', [CheckoutGoogleController::class, 'redirect'])->name('checkout.google.redirect');
|
|
Route::get('/checkout/auth/google/callback', [CheckoutGoogleController::class, 'callback'])->name('checkout.google.callback');
|
|
Route::post('/stripe/create-payment-intent', [CheckoutController::class, 'createPaymentIntent'])->name('stripe.create-payment-intent');
|
|
Route::post('/stripe/confirm-payment', [CheckoutController::class, 'confirmPayment'])->name('stripe.confirm-payment');
|
|
Route::post('/checkout/track-abandoned', [CheckoutController::class, 'trackAbandonedCheckout'])->name('checkout.track-abandoned');
|
|
Route::post('/set-locale', [LocaleController::class, 'set'])->name('set-locale');
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::post('/paypal/create-order', [PayPalController::class, 'createOrder'])->name('paypal.create-order');
|
|
Route::post('/paypal/capture-order', [PayPalController::class, 'captureOrder'])->name('paypal.capture-order');
|
|
Route::post('/paypal/create-subscription', [PayPalController::class, 'createSubscription'])->name('paypal.create-subscription');
|
|
});
|
|
|
|
Route::post('/paypal/webhook', [PayPalWebhookController::class, 'verify'])->name('paypal.webhook');
|