59 lines
3.2 KiB
PHP
59 lines
3.2 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Auth\AuthController;
|
|
use App\Http\Controllers\TaskController;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// ─── Auth ───
|
|
Route::post('auth/register', [AuthController::class, 'register']);
|
|
Route::post('auth/login', [AuthController::class, 'login']);
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::get ('auth/me', [AuthController::class, 'me']);
|
|
Route::post('auth/logout', [AuthController::class, 'logout']);
|
|
});
|
|
|
|
// ─── Endpoints del DummyBot (ESP32) ───
|
|
// Usa el token del dispositivo en Authorization: Bearer <token>
|
|
Route::middleware('auth.device')->prefix('device')->group(function () {
|
|
Route::get ('tasks/pending', [TaskController::class, 'pending']);
|
|
Route::post ('tasks', [TaskController::class, 'store']);
|
|
Route::post ('tasks/{task}/done', [TaskController::class, 'done']);
|
|
Route::post ('tasks/{task}/snooze', [TaskController::class, 'snooze']);
|
|
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'),
|
|
]);
|
|
});
|
|
});
|
|
|
|
// ─── 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']);
|
|
});
|