i dont know

This commit is contained in:
Lars Behrends
2025-10-20 23:40:55 +02:00
parent 552bb72370
commit 73d8441787
33 changed files with 3079 additions and 69 deletions

View File

@@ -10,7 +10,7 @@ use App\Controllers\GameController;
use App\Controllers\AdultController;
use App\Http\Middleware\AuthMiddleware;
use App\Http\Middleware\AdminMiddleware;
use App\Controllers\ActorController;
use App\Controllers\ImageController;
// Authentication routes (no middleware required)
$app->get('/login', AuthController::class . ':showLogin')->setName('auth.login');
@@ -20,45 +20,78 @@ $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');
// Image serving (no auth required for public images)
$group->get('/images/{path:.+}', 'App\Controllers\ImageController:serve')->setName('images.serve');
// Global Search
$group->get('/search', 'App\Controllers\SearchController:index')->setName('search.index');
$group->get('/', 'App\Controllers\DashboardController:index')->setName('dashboard.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');
$mediaGroup->delete('/games/{game_key}', GameController::class . ':delete')->setName('games.delete');
// Movies
$mediaGroup->get('/movies', 'App\Controllers\MovieController:index')->setName('movies.index');
$mediaGroup->get('/movies/{id:\d+}', 'App\Controllers\MovieController:show')->setName('movies.show');
$mediaGroup->delete('/movies/{id:\d+}', 'App\Controllers\MovieController:delete')->setName('movies.delete');
// 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');
$mediaGroup->delete('/tv-shows/{id:\d+}', 'App\Controllers\TvShowController:delete')->setName('tvshows.delete');
// Music
$mediaGroup->get('/music', 'App\Controllers\MusicController:index')->setName('music.index');
$mediaGroup->get('/music/{id:\d+}', 'App\Controllers\MusicController:show')->setName('music.show');
$mediaGroup->delete('/music/{id:\d+}', 'App\Controllers\MusicController:delete')->setName('music.delete');
// Adult Videos
$mediaGroup->get('/adult', AdultController::class . ':index')->setName('adult.index');
$mediaGroup->get('/adult/{id:\d+}', AdultController::class . ':show')->setName('adult.show');
$mediaGroup->delete('/adult/{id:\d+}', AdultController::class . ':delete')->setName('adult.delete');
// Adult Performers (Actors)
$mediaGroup->get('/actors', ActorController::class . ':index')->setName('actors.index');
$mediaGroup->get('/actors/{id:\d+}', ActorController::class . ':show')->setName('actors.show');
$mediaGroup->get('/actors', 'App\Controllers\ActorController:index')->setName('actors.index');
$mediaGroup->get('/actors/{id:\d+}', 'App\Controllers\ActorController:show')->setName('actors.show');
});
})->add(AuthMiddleware::class);
})->add(AuthMiddleware::class)->add('App\Http\Middleware\MediaVisibilityMiddleware');
// 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);
// Admin routes (require admin role)
$app->group('/admin', function (RouteCollectorProxy $adminGroup) {
// Dashboard
$adminGroup->get('', AdminController::class . ':index')->setName('admin.index');
$adminGroup->get('/settings', AdminController::class . ':settings')->setName('admin.settings');
// Media Sources
$adminGroup->group('/sources', function (RouteCollectorProxy $sourcesGroup) {
$sourcesGroup->get('', 'App\Controllers\MediaSourceController:index')->setName('admin.sources.index');
$sourcesGroup->get('/create', 'App\Controllers\MediaSourceController:create')->setName('admin.sources.create');
$sourcesGroup->post('', 'App\Controllers\MediaSourceController:store')->setName('admin.sources.store');
$sourcesGroup->get('/{id:\d+}/edit', 'App\Controllers\MediaSourceController:edit')->setName('admin.sources.edit');
$sourcesGroup->post('/{id:\d+}', 'App\Controllers\MediaSourceController:update')->setName('admin.sources.update');
$sourcesGroup->delete('/{id:\d+}', 'App\Controllers\MediaSourceController:destroy')->setName('admin.sources.destroy');
// Source sync operations
$sourcesGroup->post('/{id:\d+}/sync', 'App\Controllers\MediaSourceController:startSync')->setName('admin.sources.sync');
$sourcesGroup->get('/sync/status/{log_id}', 'App\Controllers\MediaSourceController:syncStatus')->setName('admin.sources.sync.status');
});
// Sync Management
$adminGroup->group('/sync', function (RouteCollectorProxy $syncGroup) {
$syncGroup->get('', 'App\Controllers\SyncController:index')->setName('admin.sync.index');
$syncGroup->post('', 'App\Controllers\SyncController:start')->setName('admin.sync.start');
$syncGroup->post('/{id:\d+}', AdminController::class . ':syncSource')->setName('admin.sync');
$syncGroup->get('/status/{id:\d+}', AdminController::class . ':syncStatus')->setName('admin.sync.status');
$syncGroup->get('/status/{log_id}', 'App\Controllers\SyncController:status')->setName('admin.sync.status');
$syncGroup->post('/{log_id}/cancel', 'App\Controllers\SyncController:cancel')->setName('admin.sync.cancel');
$syncGroup->post('/clear-logs', 'App\Controllers\SyncController:clearLogs')->setName('admin.sync.clearLogs');
});
})->add(AdminMiddleware::class);