From 3a5da955a4be8f6c0e932e714dd906a8c06926a4 Mon Sep 17 00:00:00 2001 From: javiservices Date: Wed, 17 Jun 2026 09:15:55 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20mover=20rutas=20web=20/api/*=20a=20route?= =?UTF-8?q?s/web.php=20para=20usar=20sesi=C3=B3n=20Sanctum=20(auth=20web?= =?UTF-8?q?=20guard)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/api.php | 36 ++++++------------------------------ routes/web.php | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/routes/api.php b/routes/api.php index 1acd783..2bc8415 100644 --- a/routes/api.php +++ b/routes/api.php @@ -5,7 +5,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; -// ─── Auth ─── +// ─── Auth (JSON, devuelve token Sanctum para integraciones externas) ─── Route::post('auth/register', [AuthController::class, 'register']); Route::post('auth/login', [AuthController::class, 'login']); Route::middleware('auth:sanctum')->group(function () { @@ -23,36 +23,12 @@ Route::delete('tasks/{task}', [TaskController::class, 'destroy']); Route::post ('heartbeat', function (Request $r) { return response()->json([ - 'ok' => true, - 'server_time' => now()->toIso8601String(), - 'device' => $r->attributes->get('device')?->only('id','name'), + 'ok' => true, + 'server_time' => now()->toIso8601String(), + 'device' => $r->attributes->get('device')?->only('id','name'), ]); }); }); -// ─── Web UI (mismo backend; usa sesiones + Sanctum) ─── -// Tareas -Route::middleware('auth:sanctum')->group(function () { - Route::get ('/tasks', [TaskController::class, 'index']); - Route::post ('/tasks', [TaskController::class, 'store']); - Route::put ('/tasks/{task}', [TaskController::class, 'update']); - Route::delete('/tasks/{task}', [TaskController::class, 'destroy']); - Route::post ('/tasks/{task}/done', [TaskController::class, 'done']); - Route::post ('/tasks/{task}/snooze', [TaskController::class, 'snooze']); - Route::post ('/tasks/{task}/restore',[TaskController::class, 'restore']); - Route::get ('/tasks/stats', [TaskController::class, 'stats']); - // Proyectos - Route::get ('/projects', [\App\Http\Controllers\Api\ProjectController::class, 'index']); - Route::post ('/projects', [\App\Http\Controllers\Api\ProjectController::class, 'store']); - Route::put ('/projects/{project}',[\App\Http\Controllers\Api\ProjectController::class, 'update']); - Route::delete('/projects/{project}',[\App\Http\Controllers\Api\ProjectController::class, 'destroy']); - // Tags - Route::get ('/tags', [\App\Http\Controllers\Api\TagController::class, 'index']); - Route::post ('/tags', [\App\Http\Controllers\Api\TagController::class, 'store']); - Route::delete('/tags/{tag}', [\App\Http\Controllers\Api\TagController::class, 'destroy']); - // Devices - Route::get ('/devices', [\App\Http\Controllers\Api\DeviceController::class, 'index']); - Route::post ('/devices', [\App\Http\Controllers\Api\DeviceController::class, 'store']); - Route::post ('/devices/{device}/rotate', [\App\Http\Controllers\Api\DeviceController::class, 'rotate']); - Route::delete('/devices/{device}',[\App\Http\Controllers\Api\DeviceController::class, 'destroy']); -}); +// Las rutas web JSON (/api/tasks, /api/devices, etc.) están en routes/web.php +// porque necesitan sesión + Sanctum web guard para que la UI funcione sin tokens. \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 3072ffa..1a6a23a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,8 +3,12 @@ use App\Http\Controllers\PageController; use App\Http\Controllers\TaskController; use App\Http\Controllers\Auth\LoginController; +use App\Http\Controllers\Api\DeviceController; +use App\Http\Controllers\Api\ProjectController; +use App\Http\Controllers\Api\TagController; use Illuminate\Support\Facades\Route; +// ─── Páginas públicas ─── Route::get ('/', [PageController::class, 'home'])->name('home'); Route::get ('/login', [LoginController::class, 'showLogin'])->name('login'); Route::get ('/register',[LoginController::class, 'showRegister'])->name('register'); @@ -12,7 +16,33 @@ Route::post('/register',[LoginController::class, 'register']); Route::post('/logout', [LoginController::class, 'logout'])->middleware('auth:sanctum')->name('logout'); +// ─── Páginas protegidas ─── Route::middleware('auth:sanctum')->group(function () { Route::get('/app', [PageController::class, 'app'])->name('app'); Route::get('/app/settings', [PageController::class, 'settings'])->name('settings'); + + // API web (con sesión, usa el guard 'web' de Sanctum) + // Tareas + Route::get ('/api/tasks', [TaskController::class, 'index']); + Route::post ('/api/tasks', [TaskController::class, 'store']); + Route::put ('/api/tasks/{task}', [TaskController::class, 'update']); + Route::delete('/api/tasks/{task}', [TaskController::class, 'destroy']); + Route::post ('/api/tasks/{task}/done', [TaskController::class, 'done']); + Route::post ('/api/tasks/{task}/snooze', [TaskController::class, 'snooze']); + Route::post ('/api/tasks/{task}/restore', [TaskController::class, 'restore']); + Route::get ('/api/tasks/stats', [TaskController::class, 'stats']); + // Proyectos + Route::get ('/api/projects', [ProjectController::class, 'index']); + Route::post ('/api/projects', [ProjectController::class, 'store']); + Route::put ('/api/projects/{project}', [ProjectController::class, 'update']); + Route::delete('/api/projects/{project}', [ProjectController::class, 'destroy']); + // Tags + Route::get ('/api/tags', [TagController::class, 'index']); + Route::post ('/api/tags', [TagController::class, 'store']); + Route::delete('/api/tags/{tag}', [TagController::class, 'destroy']); + // Devices + Route::get ('/api/devices', [DeviceController::class, 'index']); + Route::post ('/api/devices', [DeviceController::class, 'store']); + Route::post ('/api/devices/{device}/rotate', [DeviceController::class, 'rotate']); + Route::delete('/api/devices/{device}', [DeviceController::class, 'destroy']); });