|
4 | 4 | Tutte le route sono registrate tramite HomeAssistantView, che applica |
5 | 5 | l'autenticazione di Home Assistant per default (requires_auth = True). |
6 | 6 | Gli endpoint che leggono o modificano lo stato del registry richiedono |
7 | | -inoltre privilegi di amministratore (requires_admin = True). |
| 7 | +inoltre un controllo esplicito su user.is_admin nel handler. |
8 | 8 | """ |
9 | 9 | from __future__ import annotations |
10 | 10 |
|
@@ -153,13 +153,16 @@ async def get(self, request: web.Request) -> web.Response: |
153 | 153 | class OrphanCleanerDeleteView(HomeAssistantView): |
154 | 154 | """POST /api/orphan_cleaner/delete - elimina le entità specificate. Richiede admin.""" |
155 | 155 |
|
156 | | - url = "/api/orphan_cleaner/delete" |
157 | | - name = "api:orphan_cleaner:delete" |
158 | | - requires_auth = True |
159 | | - requires_admin = True |
| 156 | + url = "/api/orphan_cleaner/delete" |
| 157 | + name = "api:orphan_cleaner:delete" |
| 158 | + requires_auth = True |
160 | 159 |
|
161 | 160 | async def post(self, request: web.Request) -> web.Response: |
162 | 161 | hass: HomeAssistant = request.app["hass"] |
| 162 | + user = request.get("hass_user") |
| 163 | + if user is None or not user.is_admin: |
| 164 | + return web.Response(status=403, content_type="application/json", |
| 165 | + text='{"error":"Admin privileges required"}') |
163 | 166 | try: |
164 | 167 | body = await request.json() |
165 | 168 | except Exception: |
@@ -188,16 +191,19 @@ async def post(self, request: web.Request) -> web.Response: |
188 | 191 |
|
189 | 192 |
|
190 | 193 | class OrphanCleanerExportView(HomeAssistantView): |
191 | | - """POST /api/orphan_cleaner/export - salva un backup JSON. Richiede admin |
192 | | - perché scrive un file nella directory di configurazione.""" |
| 194 | + """POST /api/orphan_cleaner/export - salva un backup JSON. |
| 195 | + Richiede admin perché scrive un file nella directory di configurazione.""" |
193 | 196 |
|
194 | | - url = "/api/orphan_cleaner/export" |
195 | | - name = "api:orphan_cleaner:export" |
196 | | - requires_auth = True |
197 | | - requires_admin = True |
| 197 | + url = "/api/orphan_cleaner/export" |
| 198 | + name = "api:orphan_cleaner:export" |
| 199 | + requires_auth = True |
198 | 200 |
|
199 | 201 | async def post(self, request: web.Request) -> web.Response: |
200 | 202 | hass: HomeAssistant = request.app["hass"] |
| 203 | + user = request.get("hass_user") |
| 204 | + if user is None or not user.is_admin: |
| 205 | + return web.Response(status=403, content_type="application/json", |
| 206 | + text='{"error":"Admin privileges required"}') |
201 | 207 | try: |
202 | 208 | body = await request.json() |
203 | 209 | except Exception: |
@@ -251,7 +257,7 @@ async def get(self, request: web.Request) -> web.Response: |
251 | 257 | async def post(self, request: web.Request) -> web.Response: |
252 | 258 | hass: HomeAssistant = request.app["hass"] |
253 | 259 | user = request.get("hass_user") |
254 | | - if user is not None and not user.is_admin: |
| 260 | + if user is None or not user.is_admin: |
255 | 261 | return web.Response(status=403, content_type="application/json", |
256 | 262 | text='{"error":"Admin privileges required"}') |
257 | 263 | try: |
|
0 commit comments