Rutas del Sistema
El proyecto define rutas en dos archivos principales: routes/web.php y routes/auth.php.
Tabla de Contenidos
1. Rutas Web (web.php)
Ubicación: routes/web.php
Rutas Públicas
| Método | URI | Controlador | Nombre |
|---|---|---|---|
| GET | / |
AuthenticatedSessionController@create | login |
| GET | /posters/public |
PosterController@postersPublic | posters.public |
| GET | /posters/public/show/{poster} |
PosterController@show | posters.show |
| GET | /posters/public/search |
PosterController@postersSearch | posters.search |
Rutas Autenticadas
| Método | URI | Controlador | Nombre | Middleware |
|---|---|---|---|---|
| GET | /dashboard |
DashboardController@index | dashboard | auth, verified |
Grupo: Admin (middleware: auth, verified, admin)
Route::middleware(['auth', 'verified', 'admin'])->group(function () {
// Users
Route::get('/dashboard/users', [UsersController::class, 'index'])->name('dashboard.users');
Route::get('/dashboard/users/create', [UsersController::class, 'create'])->name('dashboard.users.create');
Route::post('/dashboard/users/store', [UsersController::class, 'store'])->name('dashboard.users.store');
Route::get('/dashboard/users/{user}/edit', [UsersController::class, 'edit'])->name('dashboard.users.edit');
Route::put('/dashboard/users/{user}', [UsersController::class, 'update'])->name('dashboard.users.update');
Route::delete('/dashboard/users/{user}', [UsersController::class, 'destroy'])->name('dashboard.users.destroy');
// Sponsors
Route::get('/dashboard/sponsors', [SponsorController::class, 'index'])->name('dashboard.sponsors');
Route::get('/dashboard/sponsors/create', [SponsorController::class, 'create'])->name('dashboard.sponsors.create');
Route::post('/dashboard/sponsors/store', [SponsorController::class, 'store'])->name('dashboard.sponsors.store');
Route::get('/dashboard/sponsors/{sponsor}/edit', [SponsorController::class, 'edit'])->name('dashboard.sponsors.edit');
Route::put('/dashboard/sponsors/{sponsor}', [SponsorController::class, 'update'])->name('dashboard.sponsors.update');
Route::delete('/dashboard/sponsors/{sponsor}', [SponsorController::class, 'destroy'])->name('dashboard.sponsors.destroy');
// Categories
Route::get('/dashboard/categories', [CategoryController::class, 'index'])->name('dashboard.categories');
Route::get('/dashboard/categories/create', [CategoryController::class, 'create'])->name('dashboard.categories.create');
Route::post('/dashboard/categories/store', [CategoryController::class, 'store'])->name('dashboard.categories.store');
Route::get('/dashboard/categories/{category}/edit', [CategoryController::class, 'edit'])->name('dashboard.categories.edit');
Route::put('/dashboard/categories/{category}', [CategoryController::class, 'update'])->name('dashboard.categories.update');
Route::delete('/dashboard/categories/{category}', [CategoryController::class, 'destroy'])->name('dashboard.categories.destroy');
});
Grupo: Admin-Speaker (middleware: auth, verified, admin-speaker)
Route::middleware(['auth', 'verified', 'admin-speaker'])->group(function () {
// Presentations
Route::get('/dashboard/presentations', [PresentationController::class, 'index'])->name('dashboard.presentations');
Route::get('/dashboard/presentations/create/{user}', [PresentationController::class, 'create'])->name('dashboard.presentations.create');
Route::post('/dashboard/presentations/store/{user}', [PresentationController::class, 'store'])->name('dashboard.presentations.store');
Route::get('/dashboard/presentations/{presentation}/edit', [PresentationController::class, 'edit'])->name('dashboard.presentations.edit');
Route::put('/dashboard/presentations/{presentation}', [PresentationController::class, 'update'])->name('dashboard.presentations.update');
Route::delete('/dashboard/presentations/{presentation}', [PresentationController::class, 'destroy'])->name('dashboard.presentations.destroy');
Route::put('/dashboard/presentations/publish/{presentation}', [PresentationController::class, 'publish'])->name('dashboard.presentations.publish');
// Posters
Route::get('/dashboard/posters', [PosterController::class, 'index'])->name('dashboard.posters');
Route::get('/dashboard/posters/create/{user}', [PosterController::class, 'create'])->name('dashboard.posters.create');
Route::post('/dashboard/posters/store/{user}', [PosterController::class, 'store'])->name('dashboard.posters.store');
Route::get('/dashboard/posters/{poster}/edit', [PosterController::class, 'edit'])->name('dashboard.posters.edit');
Route::put('/dashboard/posters/{poster}', [PosterController::class, 'update'])->name('dashboard.posters.update');
Route::delete('/dashboard/posters/{poster}', [PosterController::class, 'destroy'])->name('dashboard.posters.destroy');
Route::put('/dashboard/posters/publish/{poster}', [PosterController::class, 'publish'])->name('dashboard.posters.publish');
});
Rutas de Perfil
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
2. Rutas de Autenticación (auth.php)
Ubicación: routes/auth.php
Grupo: Guest (middleware: guest)
| Método | URI | Controlador | Nombre |
|---|---|---|---|
| GET | /login | AuthenticatedSessionController@create | login |
| POST | /login | AuthenticatedSessionController@store | - |
| GET | /register | RegisteredUserController@create | register |
| POST | /register | RegisteredUserController@store | - |
| GET | /forgot-password | PasswordResetLinkController@create | password.request |
| POST | /forgot-password | PasswordResetLinkController@store | password.email |
| GET | /reset-password/{token} | NewPasswordController@create | password.reset |
| POST | /reset-password | NewPasswordController@store | password.store |
Grupo: Auth (middleware: auth)
| Método | URI | Controlador | Nombre |
|---|---|---|---|
| GET | /verify-email | EmailVerificationPromptController | verification.notice |
| GET | /verify-email/{id}/{hash} | VerifyEmailController | verification.verify |
| POST | /email/verification-notification | EmailVerificationNotificationController | verification.send |
| GET | /confirm-password | ConfirmablePasswordController | password.confirm |
| PUT | /password | PasswordController | password.update |
| POST | /logout | AuthenticatedSessionController@destroy | logout |
3. Grupos de Rutas por Middleware
Las rutas están organizadas en grupos según los permisos requeridos:
Middleware Personalizados
| Middleware | Descripción | Rutas Protegidas |
|---|---|---|
admin |
Verifica rol admin | users, sponsors, categories |
admin-speaker |
Verifica rol admin o ponente | presentations, posters |
owner-poster-create |
Verifica rol ponente para crear | posters/create |
owner-poster-edit |
Verifica propietario del póster | posters/edit |
owner-presentation-create |
Verifica rol ponente para crear | presentations/create |
owner-presentation-edit |
Verifica propietario de presentación | presentations/edit |
published-poster-show |
Verifica póster publicado | posters/public/show |
Nota: Los middlewares personalizados se definen en
app/Http/Middleware/ y se registran en bootstrap/app.php.
Estructura de Archivos de Rutas
routes/
├── web.php # Rutas principales de la aplicación
├── auth.php # Rutas de autenticación (Laravel Breeze)
└── console.php # Rutas de consola/Artisan