group(function () { Route::prefix('google')->group(function () { Route::get('redirect', [SocialAuthController::class, 'redirectToGoogle'])->name('auth.google.redirect'); Route::get('callback', [SocialAuthController::class, 'handleGoogleCallback'])->name('auth.google.callback'); }); }); Route::middleware(['auth', 'verified'])->group(function () { Route::get('dashboard', [UserDashboardController::class, 'index'])->name('dashboard'); Route::prefix('subscribe')->group(function () { Route::get('success', [UserPurchaseController::class, 'subscribeSuccess'])->name('subscribe.success'); Route::get('cancelled', [UserPurchaseController::class, 'subscribeCancelled'])->name('subscribe.cancelled'); }); Route::prefix('purchase')->group(function () { Route::get('success', [UserPurchaseController::class, 'purchaseSuccess'])->name('purchase.success'); Route::get('cancelled', [UserPurchaseController::class, 'purchaseCancelled'])->name('purchase.cancelled'); }); Route::prefix('admin')->middleware([AdminMiddleware::class])->group(function () { Route::get('/', [AdminDashboardController::class, 'index'])->name('admin.dashboard'); Route::prefix('background-generation')->group(function () { Route::get('/', [AdminBackgroundGenerationController::class, 'index'])->name('admin.background-generation'); Route::post('generate', [AdminBackgroundGenerationController::class, 'generate']) ->name('admin.background-generation.generate'); Route::post('save', [AdminBackgroundGenerationController::class, 'save']) ->name('admin.background-generation.save'); Route::post('delete/{id}', [AdminBackgroundGenerationController::class, 'delete']) ->name('admin.background-generation.delete'); }); }); }); require __DIR__.'/settings.php'; require __DIR__.'/auth.php'; } Route::get('/', [FrontHomeController::class, 'index']) ->middleware('cacheResponse') ->name('home'); Route::get('/privacy', [FrontPagesController::class, 'privacy']) ->middleware('cacheResponse') ->name('privacy'); Route::get('/terms', [FrontPagesController::class, 'terms']) ->middleware('cacheResponse') ->name('terms'); Route::get('/dmca-copyright', [FrontPagesController::class, 'dmcaCopyright']) ->middleware('cacheResponse') ->name('dmca-copyright'); Route::get('/meme-library', [FrontMemeController::class, 'index']) ->middleware('cacheResponse') ->name('memes.index'); Route::get('/meme-library/{search}', [FrontMemeController::class, 'search']) ->middleware('cacheResponse') ->name('memes.search'); Route::get('/meme/{slug}', [FrontMemeController::class, 'show']) ->middleware('cacheResponse') ->name('memes.show'); Route::get('/meme/og/{ids}.jpg', [FrontMemeController::class, 'generateOG']) ->middleware('cacheResponse') ->name('memes.og'); // Admin Tools with Basic Auth Route::prefix('duplicates')->middleware([BasicAuthMiddleware::class])->group(function () { Route::get('/', [AdminDuplicateController::class, 'index'])->name('admin.duplicates'); Route::post('scan', [AdminDuplicateController::class, 'scan']) ->name('admin.duplicates.scan'); Route::post('delete', [AdminDuplicateController::class, 'delete']) ->name('admin.duplicates.delete'); Route::post('regenerate-hash', [AdminDuplicateController::class, 'regenerateHash']) ->name('admin.duplicates.regenerate-hash'); });