- Added authentication controllers (Login, Register) - Added UserController for user profile management - Added VideoController with full CRUD operations - Added Video model with relationships (user, likes, views) - Added User model enhancements (avatar, video relationships) - Added database migrations for video_likes, video_views, user_avatar, video_visibility - Added CompressVideoJob for video processing - Added VideoUploaded mail notification - Added authentication routes - Updated web routes with video and user routes - Added layout templates (app, plain, partials) - Added user views (profile, settings, channel, history, liked) - Added video views (create, edit, index, show) - Added email templates
54 lines
2.4 KiB
PHP
54 lines
2.4 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\VideoController;
|
|
use App\Http\Controllers\UserController;
|
|
|
|
// Redirect root to videos
|
|
Route::get('/', function () {
|
|
return redirect('/videos');
|
|
});
|
|
|
|
// Video routes - public
|
|
Route::get('/videos', [VideoController::class, 'index'])->name('videos.index');
|
|
Route::get('/videos/search', [VideoController::class, 'search'])->name('videos.search');
|
|
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');
|
|
|
|
// 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');
|
|
});
|
|
|
|
// 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');
|
|
|
|
// Authentication Routes
|
|
require __DIR__.'/auth.php';
|
|
|