Skip to content

Commit fbd55ac

Browse files
committed
Modify require_admin decorator
1 parent 3278249 commit fbd55ac

File tree

3 files changed

+17
-34
lines changed

3 files changed

+17
-34
lines changed

homeassistant/components/config/config_entries.py

+9-27
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,7 @@ async def get(self, request: web.Request) -> NoReturn:
165165
"""Not implemented."""
166166
raise aiohttp.web_exceptions.HTTPMethodNotAllowed("GET", ["POST"])
167167

168-
@require_admin(
169-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission="add")
170-
)
168+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission="add")
171169
@RequestDataValidator(
172170
vol.Schema(
173171
{
@@ -218,16 +216,12 @@ class ConfigManagerFlowResourceView(
218216
url = "/api/config/config_entries/flow/{flow_id}"
219217
name = "api:config:config_entries:flow:resource"
220218

221-
@require_admin(
222-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission="add")
223-
)
219+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission="add")
224220
async def get(self, request: web.Request, /, flow_id: str) -> web.Response:
225221
"""Get the current state of a data_entry_flow."""
226222
return await super().get(request, flow_id)
227223

228-
@require_admin(
229-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission="add")
230-
)
224+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission="add")
231225
async def post(self, request: web.Request, flow_id: str) -> web.Response:
232226
"""Handle a POST request."""
233227
return await super().post(request, flow_id)
@@ -262,9 +256,7 @@ class OptionManagerFlowIndexView(
262256
url = "/api/config/config_entries/options/flow"
263257
name = "api:config:config_entries:option:flow"
264258

265-
@require_admin(
266-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
267-
)
259+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
268260
async def post(self, request: web.Request) -> web.Response:
269261
"""Handle a POST request.
270262
@@ -281,16 +273,12 @@ class OptionManagerFlowResourceView(
281273
url = "/api/config/config_entries/options/flow/{flow_id}"
282274
name = "api:config:config_entries:options:flow:resource"
283275

284-
@require_admin(
285-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
286-
)
276+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
287277
async def get(self, request: web.Request, /, flow_id: str) -> web.Response:
288278
"""Get the current state of a data_entry_flow."""
289279
return await super().get(request, flow_id)
290280

291-
@require_admin(
292-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
293-
)
281+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
294282
async def post(self, request: web.Request, flow_id: str) -> web.Response:
295283
"""Handle a POST request."""
296284
return await super().post(request, flow_id)
@@ -304,9 +292,7 @@ class SubentryManagerFlowIndexView(
304292
url = "/api/config/config_entries/subentries/flow"
305293
name = "api:config:config_entries:subentries:flow"
306294

307-
@require_admin(
308-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
309-
)
295+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
310296
@RequestDataValidator(
311297
vol.Schema(
312298
{
@@ -341,16 +327,12 @@ class SubentryManagerFlowResourceView(
341327
url = "/api/config/config_entries/subentries/flow/{flow_id}"
342328
name = "api:config:config_entries:subentries:flow:resource"
343329

344-
@require_admin(
345-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
346-
)
330+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
347331
async def get(self, request: web.Request, /, flow_id: str) -> web.Response:
348332
"""Get the current state of a data_entry_flow."""
349333
return await super().get(request, flow_id)
350334

351-
@require_admin(
352-
error=Unauthorized(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
353-
)
335+
@require_admin(perm_category=CAT_CONFIG_ENTRIES, permission=POLICY_EDIT)
354336
async def post(self, request: web.Request, flow_id: str) -> web.Response:
355337
"""Handle a POST request."""
356338
return await super().post(request, flow_id)

homeassistant/components/http/decorators.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def require_admin[
2727
](
2828
_func: None = None,
2929
*,
30-
error: Unauthorized | None = None,
30+
perm_category: str | None = None,
31+
permission: str | None = None,
3132
) -> Callable[
3233
[_FuncType[_HomeAssistantViewT, _P, _ResponseT]],
3334
_FuncType[_HomeAssistantViewT, _P, _ResponseT],
@@ -51,7 +52,8 @@ def require_admin[
5152
](
5253
_func: _FuncType[_HomeAssistantViewT, _P, _ResponseT] | None = None,
5354
*,
54-
error: Unauthorized | None = None,
55+
perm_category: str | None = None,
56+
permission: str | None = None,
5557
) -> (
5658
Callable[
5759
[_FuncType[_HomeAssistantViewT, _P, _ResponseT]],
@@ -76,7 +78,7 @@ async def with_admin(
7678
"""Check admin and call function."""
7779
user: User = request["hass_user"]
7880
if not user.is_admin:
79-
raise error or Unauthorized()
81+
raise Unauthorized(perm_category=perm_category, permission=permission)
8082

8183
return await func(self, request, *args, **kwargs)
8284

homeassistant/components/repairs/websocket_api.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
from homeassistant.components.http.data_validator import RequestDataValidator
1515
from homeassistant.components.http.decorators import require_admin
1616
from homeassistant.core import HomeAssistant, callback
17-
from homeassistant.exceptions import Unauthorized
1817
from homeassistant.helpers import issue_registry as ir
1918
from homeassistant.helpers.data_entry_flow import (
2019
FlowManagerIndexView,
@@ -114,7 +113,7 @@ class RepairsFlowIndexView(FlowManagerIndexView):
114113
url = "/api/repairs/issues/fix"
115114
name = "api:repairs:issues:fix"
116115

117-
@require_admin(error=Unauthorized(permission=POLICY_EDIT))
116+
@require_admin(permission=POLICY_EDIT)
118117
@RequestDataValidator(
119118
vol.Schema(
120119
{
@@ -149,12 +148,12 @@ class RepairsFlowResourceView(FlowManagerResourceView):
149148
url = "/api/repairs/issues/fix/{flow_id}"
150149
name = "api:repairs:issues:fix:resource"
151150

152-
@require_admin(error=Unauthorized(permission=POLICY_EDIT))
151+
@require_admin(permission=POLICY_EDIT)
153152
async def get(self, request: web.Request, /, flow_id: str) -> web.Response:
154153
"""Get the current state of a data_entry_flow."""
155154
return await super().get(request, flow_id)
156155

157-
@require_admin(error=Unauthorized(permission=POLICY_EDIT))
156+
@require_admin(permission=POLICY_EDIT)
158157
async def post(self, request: web.Request, flow_id: str) -> web.Response:
159158
"""Handle a POST request."""
160159
return await super().post(request, flow_id)

0 commit comments

Comments
 (0)