mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-09-25 23:48:58 +03:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abf8a1875c | ||
|
|
172b404a93 |
Vendored
+2
-2
@@ -2308,8 +2308,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/HTTPValidationError'
|
$ref: '#/components/schemas/HTTPValidationError'
|
||||||
security:
|
security:
|
||||||
- frigateUserAuth: []
|
- frigateUserAuth: []
|
||||||
x-required-role: any
|
x-required-role: camera
|
||||||
description: '**Access:** Any authenticated user.'
|
description: '**Access:** Authenticated user with access to the referenced camera.'
|
||||||
/review/summarize/start/{start_ts}/end/{end_ts}:
|
/review/summarize/start/{start_ts}/end/{end_ts}:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
|
|||||||
@@ -709,6 +709,7 @@ async def get_review(request: Request, review_id: str):
|
|||||||
dependencies=[Depends(allow_any_authenticated())],
|
dependencies=[Depends(allow_any_authenticated())],
|
||||||
)
|
)
|
||||||
async def set_not_reviewed(
|
async def set_not_reviewed(
|
||||||
|
request: Request,
|
||||||
review_id: str,
|
review_id: str,
|
||||||
current_user: dict = Depends(get_current_user),
|
current_user: dict = Depends(get_current_user),
|
||||||
):
|
):
|
||||||
@@ -727,6 +728,8 @@ async def set_not_reviewed(
|
|||||||
status_code=404,
|
status_code=404,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await require_camera_access(review.camera, request=request)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user_review = UserReviewStatus.get(
|
user_review = UserReviewStatus.get(
|
||||||
UserReviewStatus.user_id == user_id,
|
UserReviewStatus.user_id == user_id,
|
||||||
|
|||||||
@@ -166,6 +166,29 @@ class TestCameraAccessEventReview(BaseTestHttp):
|
|||||||
resp = client.get("/review/rev1")
|
resp = client.get("/review/rev1")
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
|
|
||||||
|
def test_review_not_reviewed_access(self):
|
||||||
|
super().insert_mock_review_segment("rev1", camera="front_door")
|
||||||
|
|
||||||
|
# Allowed
|
||||||
|
async def mock_require_allowed(camera: str, request: Request = None):
|
||||||
|
if camera == "front_door":
|
||||||
|
return
|
||||||
|
raise HTTPException(status_code=403, detail="Access denied")
|
||||||
|
|
||||||
|
with patch("frigate.api.review.require_camera_access", mock_require_allowed):
|
||||||
|
with AuthTestClient(self.app) as client:
|
||||||
|
resp = client.delete("/review/rev1/viewed")
|
||||||
|
assert resp.status_code == 200
|
||||||
|
|
||||||
|
# Disallowed
|
||||||
|
async def mock_require_disallowed(camera: str, request: Request = None):
|
||||||
|
raise HTTPException(status_code=403, detail="Access denied")
|
||||||
|
|
||||||
|
with patch("frigate.api.review.require_camera_access", mock_require_disallowed):
|
||||||
|
with AuthTestClient(self.app) as client:
|
||||||
|
resp = client.delete("/review/rev1/viewed")
|
||||||
|
assert resp.status_code == 403
|
||||||
|
|
||||||
def test_event_search_access(self):
|
def test_event_search_access(self):
|
||||||
super().insert_mock_event("event1", camera="front_door")
|
super().insert_mock_event("event1", camera="front_door")
|
||||||
super().insert_mock_event("event2", camera="back_door")
|
super().insert_mock_event("event2", camera="back_door")
|
||||||
|
|||||||
Reference in New Issue
Block a user