Files
LauckCycles/routes/web.php
T

67 lines
2.8 KiB
PHP

<?php
use App\Http\Controllers\AuthController;
use App\Http\Controllers\CatalogoController;
use App\Http\Controllers\SaleController;
use App\Http\Controllers\ClientController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\ProductosController;
use App\Http\Controllers\RegisterController;
use App\Http\Controllers\TallerController;
use App\Http\Controllers\AgendaController;
use App\Http\Controllers\AppointmentController;
use App\Models\Product;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
// --- RUTAS PÚBLICAS (Cualquiera accede) ---
Route::get('/', HomeController::class);
Route::resource('catalogo', CatalogoController::class)->only(['index', 'show'])->parameters(['catalogo' => 'product']);
Route::get('login', function(){ return view('login'); })->name('login');
Route::post('login', LoginController::class)->middleware('throttle:5,1')->name('login.attempt');
Route::view('register', 'register')->name('register');
Route::post('register', RegisterController::class)->name('register.store');
Route::post('logout', function(){
Auth::guard('web')->logout();
Session::invalidate();
Session::regenerateToken();
return redirect('/');
})->name('logout');
// --- RUTAS PROTEGIDAS (Requieren Login) ---
Route::middleware(['auth'])->group(function () {
Route::view('dashboard', 'dashboard')->name('dashboard');
Route::resource('clients', ClientController::class);
Route::resource('sales', SaleController::class)->only(['index', 'create', 'store', 'show']);
Route::get('/agenda', [AgendaController::class, 'index'])->name('agenda');
Route::get('/appointments/{appointment}', [AppointmentController::class, 'show'])->name('appointments.show');
// Taller
Route::controller(TallerController::class)->prefix('taller')->name('taller.')->group(function () {
Route::get('/', 'index')->name('index');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::patch('/{appointment}/status', 'updateStatus')->name('updateStatus');
});
// Productos: Rutas de lectura para cualquier usuario logueado
Route::resource('productos', ProductosController::class)
->only(['index', 'show'])
->parameters(['productos' => 'product']);
// --- RUTAS DE ADMINISTRADOR (Solo Admin) ---
Route::middleware(['admin'])->group(function () {
// Solo el admin puede crear, editar o borrar productos
Route::resource('productos', ProductosController::class)
->only(['create', 'store', 'edit', 'update', 'destroy'])
->parameters(['productos' => 'product']);
// Si tienes más cosas de admin (ej: reportes), van aquí
});
});