Files
home_automatization/laravel-app/app/Http/Controllers/Api/V1/ZoneController.php
cacto e739ef5d38 Добавлен 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.
2026-08-12 00:21:38 +05:00

42 lines
940 B
PHP

<?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();
}
}