get('/login', AuthController::class . ':showLogin')->setName('auth.login'); $app->post('/login', AuthController::class . ':login')->setName('auth.login.post'); $app->post('/logout', AuthController::class . ':logout')->setName('auth.logout'); $app->get('/logout', AuthController::class . ':logout')->setName('auth.logout'); // Protected routes (require authentication) $app->group('', function (RouteCollectorProxy $group) { $group->get('/', DashboardController::class . ':index')->setName('home'); // Global Search $group->get('/search', 'App\Controllers\SearchController:index')->setName('search.index'); // Media Routes $group->group('/media', function (RouteCollectorProxy $mediaGroup) { // Games $mediaGroup->get('/games', GameController::class . ':index')->setName('games.index'); $mediaGroup->get('/games/{game_key}', GameController::class . ':show')->setName('games.show'); // Movies $mediaGroup->get('/movies', 'App\Controllers\MovieController:index')->setName('movies.index'); $mediaGroup->get('/movies/{id:\d+}', 'App\Controllers\MovieController:show')->setName('movies.show'); // TV Shows $mediaGroup->get('/tv-shows', 'App\Controllers\TvShowController:index')->setName('tvshows.index'); $mediaGroup->get('/tv-shows/{id:\d+}', 'App\Controllers\TvShowController:show')->setName('tvshows.show'); // Music $mediaGroup->get('/music', 'App\Controllers\MusicController:index')->setName('music.index'); $mediaGroup->get('/music/{id:\d+}', 'App\Controllers\MusicController:show')->setName('music.show'); // Adult Videos $mediaGroup->get('/adult', AdultController::class . ':index')->setName('adult.index'); $mediaGroup->get('/adult/{id:\d+}', AdultController::class . ':show')->setName('adult.show'); // Adult Performers (Actors) $mediaGroup->get('/actors', ActorController::class . ':index')->setName('actors.index'); $mediaGroup->get('/actors/{id:\d+}', ActorController::class . ':show')->setName('actors.show'); }); })->add(AuthMiddleware::class); // Admin routes (require authentication + admin role) $app->group('/admin', function (RouteCollectorProxy $group) { $group->get('', AdminController::class . ':index')->setName('admin.index'); $group->post('/sync/{id:\d+}', AdminController::class . ':syncSource')->setName('admin.sync'); $group->get('/sync/status/{id:\d+}', AdminController::class . ':syncStatus')->setName('admin.sync.status'); $group->get('/sources', AdminController::class . ':sources')->setName('admin.sources'); })->add(AdminMiddleware::class);