Yetkilendirme (RBAC)
İzin Yapısı
95 granüler izin, action:resource formatında:
read:device, write:device, delete:device, control:device
read:gateway, write:gateway, delete:gateway
read:alarm, ack:alarm, close:alarm
upload:firmware, initiate:ota, batch:ota
request:loto, approve:loto, apply:loto, release:loto
export:measurement, export:report
...
Önceden Tanımlı Roller
| Rol | İzin Sayısı | Yetkiler |
|---|---|---|
| admin | 54 | Tüm CRUD + kontrol + silme + admin |
| operator | 33 | Okuma + yazma + kontrol (silme yok) |
| viewer | 11 | Sadece okuma + rapor export |
Kullanım
@router.get("/devices/{device_id}")
async def get_device(
device_id: UUID,
user: CurrentUser = require_permissions(
[Permission.READ_DEVICE],
scope_resolver=scope_device_from_path("device_id")
)
):
...
Scope-Based Access
Scope resolver fonksiyonları, kaynağın belirli bir kiracıya ait olduğunu doğrular:
scope_region_from_path()— region_id path paramscope_subregion_from_path()— subregion_idscope_gateway_from_path()— gateway_idscope_device_from_path()— device_idscope_alarm_from_path()— alarm_id
Superuser
is_superuser=True olan kullanıcılar tüm izinlere otomatik sahiptir. Scope kontrolü yine de uygulanır.