42 lines
1.4 KiB
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]);
|
|
}
|
|
}
|