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]); } }