first commit

This commit is contained in:
Lars Behrends
2025-10-17 13:29:28 +02:00
commit 929ee43001
85 changed files with 10361 additions and 0 deletions

58
routes/web.php Normal file
View File

@@ -0,0 +1,58 @@
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Routing\RouteCollectorProxy;
use App\Controllers\AuthController;
use App\Controllers\AdminController;
use App\Controllers\DashboardController;
use App\Controllers\GameController;
use App\Controllers\AdultController;
use App\Http\Middleware\AuthMiddleware;
use App\Http\Middleware\AdminMiddleware;
// Authentication routes (no middleware required)
$app->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');
});
})->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);