name('home'); // Video routes - public Route::get('/videos', [VideoController::class, 'index'])->name('videos.index'); Route::get('/videos/search', [VideoController::class, 'search'])->name('videos.search'); Route::get('/trending', [VideoController::class, 'trending'])->name('videos.trending'); Route::get('/shorts', [VideoController::class, 'shorts'])->name('videos.shorts'); Route::get('/videos/create', [VideoController::class, 'create'])->name('videos.create'); Route::get('/videos/{video}', [VideoController::class, 'show'])->name('videos.show'); Route::get('/videos/{video}/stream', [VideoController::class, 'stream'])->name('videos.stream'); Route::get('/videos/{video}/download', [VideoController::class, 'download'])->name('videos.download'); Route::get('/videos/{video}/recommendations', [VideoController::class, 'recommendations'])->name('videos.recommendations'); // Video routes - auth required Route::middleware('auth')->group(function () { Route::get('/videos/create', [VideoController::class, 'create'])->name('videos.create'); Route::post('/videos', [VideoController::class, 'store'])->name('videos.store'); Route::get('/videos/{video}/edit', [VideoController::class, 'edit'])->name('videos.edit'); Route::put('/videos/{video}', [VideoController::class, 'update'])->name('videos.update'); Route::delete('/videos/{video}', [VideoController::class, 'destroy'])->name('videos.destroy'); // Like/unlike routes Route::post('/videos/{video}/like', [UserController::class, 'like'])->name('videos.like'); Route::post('/videos/{video}/unlike', [UserController::class, 'unlike'])->name('videos.unlike'); Route::post('/videos/{video}/toggle-like', [UserController::class, 'toggleLike'])->name('videos.toggleLike'); }); // Comment routes Route::get('/videos/{video}/comments', [CommentController::class, 'index'])->name('comments.index'); Route::middleware('auth')->group(function () { Route::post('/videos/{video}/comments', [CommentController::class, 'store'])->name('comments.store'); Route::put('/comments/{comment}', [CommentController::class, 'update'])->name('comments.update'); Route::delete('/comments/{comment}', [CommentController::class, 'destroy'])->name('comments.destroy'); }); // User routes Route::middleware('auth')->group(function () { // Profile Route::get('/profile', [UserController::class, 'profile'])->name('profile'); Route::put('/profile', [UserController::class, 'updateProfile'])->name('profile.update'); // Settings Route::get('/settings', [UserController::class, 'settings'])->name('settings'); Route::put('/settings', [UserController::class, 'updateSettings'])->name('settings.update'); // History & Liked Route::get('/history', [UserController::class, 'history'])->name('history'); Route::get('/liked', [UserController::class, 'liked'])->name('liked'); }); // Channel - public for viewing, own channel requires auth Route::get('/channel/{userId?}', [UserController::class, 'channel'])->name('channel'); // Playlist routes use App\Http\Controllers\PlaylistController; // Get user playlists (for dropdown) - MUST be before /playlists/{playlist} route Route::get('/user/playlists', [PlaylistController::class, 'userPlaylists'])->name('playlists.userPlaylists'); // Public playlist routes Route::get('/playlists', [PlaylistController::class, 'index'])->name('playlists.index'); Route::get('/playlists/{playlist}', [PlaylistController::class, 'show'])->name('playlists.show'); // Authenticated playlist routes Route::middleware('auth')->group(function () { Route::get('/playlists/create', [PlaylistController::class, 'create'])->name('playlists.create'); Route::post('/playlists', [PlaylistController::class, 'store'])->name('playlists.store'); Route::get('/playlists/{playlist}/edit', [PlaylistController::class, 'edit'])->name('playlists.edit'); Route::put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('playlists.update'); Route::delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])->name('playlists.destroy'); // Playlist video management Route::post('/playlists/{playlist}/videos', [PlaylistController::class, 'addVideo'])->name('playlists.addVideo'); Route::delete('/playlists/{playlist}/videos/{video}', [PlaylistController::class, 'removeVideo'])->name('playlists.removeVideo'); Route::put('/playlists/{playlist}/reorder', [PlaylistController::class, 'reorder'])->name('playlists.reorder'); // Playlist actions Route::get('/playlists/{playlist}/play', [PlaylistController::class, 'playAll'])->name('playlists.playAll'); Route::get('/playlists/{playlist}/shuffle', [PlaylistController::class, 'shuffle'])->name('playlists.shuffle'); // Watch Later Route::post('/videos/{video}/watch-later', [PlaylistController::class, 'watchLater'])->name('videos.watchLater'); }); // Authentication Routes require __DIR__.'/auth.php'; // Super Admin Routes Route::middleware(['auth', 'super_admin'])->prefix('admin')->name('admin.')->group(function () { // Dashboard Route::get('/dashboard', [SuperAdminController::class, 'dashboard'])->name('dashboard'); // User Management Route::get('/users', [SuperAdminController::class, 'users'])->name('users'); Route::get('/users/{user}/edit', [SuperAdminController::class, 'editUser'])->name('users.edit'); Route::put('/users/{user}', [SuperAdminController::class, 'updateUser'])->name('users.update'); Route::delete('/users/{user}', [SuperAdminController::class, 'deleteUser'])->name('users.delete'); // Video Management Route::get('/videos', [SuperAdminController::class, 'videos'])->name('videos'); Route::get('/videos/{video}/edit', [SuperAdminController::class, 'editVideo'])->name('videos.edit'); Route::put('/videos/{video}', [SuperAdminController::class, 'updateVideo'])->name('videos.update'); Route::delete('/videos/{video}', [SuperAdminController::class, 'deleteVideo'])->name('videos.delete'); });