route('admin.dashboard'); }); // ─── Public (no auth) ──────────────────────────────────── Route::middleware(sprintf('throttle:%d,1', max(1, config('preregister.public_requests_per_minute'))))->group(function () { Route::get('/r/{publicPage:slug}', [PublicPageController::class, 'show'])->name('public.page'); Route::post('/r/{publicPage:slug}/subscribe', [PublicPageController::class, 'subscribe'])->name('public.subscribe'); }); // ─── Backend (auth required) ───────────────────────────── Route::middleware(['auth', 'verified'])->prefix('admin')->name('admin.')->group(function () { Route::get('/dashboard', DashboardController::class)->name('dashboard'); // Pre-registration pages (CRUD) Route::resource('pages', PageController::class); // Subscribers (nested under pages) — export before index so the path is unambiguous Route::get('pages/{page}/subscribers/export', [SubscriberController::class, 'export'])->name('pages.subscribers.export'); Route::delete('pages/{page}/subscribers/{subscriber}', [SubscriberController::class, 'destroy'])->name('pages.subscribers.destroy'); Route::post('pages/{page}/subscribers/queue-mailwizz-sync', [SubscriberController::class, 'queueMailwizzSync'])->name('pages.subscribers.queue-mailwizz-sync'); Route::get('pages/{page}/subscribers', [SubscriberController::class, 'index'])->name('pages.subscribers.index'); // Mailwizz configuration (nested under pages) Route::get('pages/{page}/mailwizz', [MailwizzController::class, 'edit'])->name('pages.mailwizz.edit'); Route::put('pages/{page}/mailwizz', [MailwizzController::class, 'update'])->name('pages.mailwizz.update'); Route::delete('pages/{page}/mailwizz', [MailwizzController::class, 'destroy'])->name('pages.mailwizz.destroy'); // Mailwizz AJAX endpoints Route::post('mailwizz/lists', [MailwizzApiController::class, 'lists'])->name('mailwizz.lists'); Route::post('mailwizz/fields', [MailwizzApiController::class, 'fields'])->name('mailwizz.fields'); // Weeztix configuration (nested under pages) Route::get('pages/{page}/weeztix', [WeeztixController::class, 'edit'])->name('pages.weeztix.edit'); Route::put('pages/{page}/weeztix', [WeeztixController::class, 'update'])->name('pages.weeztix.update'); Route::delete('pages/{page}/weeztix', [WeeztixController::class, 'destroy'])->name('pages.weeztix.destroy'); Route::get('pages/{page}/weeztix/oauth/redirect', [WeeztixOAuthController::class, 'redirect'])->name('pages.weeztix.oauth.redirect'); Route::get('weeztix/callback', [WeeztixOAuthController::class, 'callback'])->name('weeztix.callback'); Route::post('weeztix/companies', [WeeztixApiController::class, 'companies'])->name('weeztix.companies'); Route::post('weeztix/coupons', [WeeztixApiController::class, 'coupons'])->name('weeztix.coupons'); // User management (superadmin only) Route::middleware('role:superadmin')->group(function () { Route::resource('users', UserController::class)->except(['show']); }); // Profile (Breeze) Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); require __DIR__.'/auth.php';