Добавлен REST API для мобильного приложения (этап 3, без Telegram)
Токен-аутентификация Sanctum (login/logout по устройствам), эндпоинты /api/v1 для зон/устройств/правил автоматизации с тем же RBAC (owner/viewer), что и в веб-версии — контроллеры переиспользуют существующие Policy и FormRequest. Устройства отдают живой статус из Device Shadow (Redis) и историю телеметрии из ClickHouse, плюс управление (turn-on/turn-off/set-level) через device-control-service.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\ZoneRequest;
|
||||
use App\Http\Resources\ZoneResource;
|
||||
use App\Models\Zone;
|
||||
|
||||
class ZoneController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$this->authorize('viewAny', Zone::class);
|
||||
|
||||
return ZoneResource::collection(Zone::withCount('devices')->orderBy('name')->get());
|
||||
}
|
||||
|
||||
public function store(ZoneRequest $request)
|
||||
{
|
||||
$zone = $request->user()->zones()->create($request->validated());
|
||||
|
||||
return (new ZoneResource($zone))->response()->setStatusCode(201);
|
||||
}
|
||||
|
||||
public function update(ZoneRequest $request, Zone $zone)
|
||||
{
|
||||
$zone->update($request->validated());
|
||||
|
||||
return new ZoneResource($zone);
|
||||
}
|
||||
|
||||
public function destroy(Zone $zone)
|
||||
{
|
||||
$this->authorize('delete', $zone);
|
||||
|
||||
$zone->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user