dummybot/app/Http/Controllers/Api/DeviceController.php

42 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Device;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DeviceController extends Controller {
public function index(Request $r): JsonResponse {
return response()->json($r->user()->devices()->orderBy('name')->get());
}
public function store(Request $r): JsonResponse {
$data = $r->validate([
'name' => 'required|string|max:60',
'hardware' => 'nullable|string|max:60',
'firmware_version' => 'nullable|string|max:30',
]);
$device = $r->user()->devices()->create([
'name' => $data['name'],
'hardware' => $data['hardware'] ?? 'esp32',
'firmware_version' => $data['firmware_version'] ?? null,
'token' => Device::makeToken(),
]);
return response()->json($device, 201);
}
public function rotate(Request $r, Device $device): JsonResponse {
abort_unless($device->user_id === $r->user()->id, 403);
$device->update(['token' => Device::makeToken()]);
return response()->json($device);
}
public function destroy(Request $r, Device $device): JsonResponse {
abort_unless($device->user_id === $r->user()->id, 403);
$device->delete();
return response()->json(['ok' => true]);
}
}