This commit is contained in:
Nicolas Mowen 2026-05-11 11:29:50 -06:00
parent 39d522eadb
commit c8f38cef9e
2 changed files with 8 additions and 24 deletions

View File

@ -163,9 +163,7 @@ def _resolve_export(
return MediaAuthResolution.UNKNOWN, None
def check_camera_access(
role: str, camera: str, frigate_config: FrigateConfig
) -> bool:
def check_camera_access(role: str, camera: str, frigate_config: FrigateConfig) -> bool:
"""Return True iff `role` may access `camera`.
Mirrors the gating logic in `require_camera_access`: admin and any role

View File

@ -130,9 +130,7 @@ class TestResolveMediaUri(unittest.TestCase):
)
def test_clip_filename_no_matching_camera(self):
self._assert(
"/clips/nonexistent-1234.jpg", MediaAuthResolution.UNKNOWN
)
self._assert("/clips/nonexistent-1234.jpg", MediaAuthResolution.UNKNOWN)
def test_clip_thumbs(self):
self._assert("/clips/thumbs/", MediaAuthResolution.LISTING_MULTI_CAMERA)
@ -235,26 +233,18 @@ class TestDenyResponseForMediaUri(unittest.TestCase):
self.assertIsNone(self._deny("/clips/", "viewer"))
def test_restricted_role_allowed_camera(self):
self.assertIsNone(self._deny("/clips/front_door-1.jpg", "limited_user"))
self.assertIsNone(
self._deny("/clips/front_door-1.jpg", "limited_user")
)
self.assertIsNone(
self._deny(
"/recordings/2026-05-11/14/front_door/00.00.mp4", "limited_user"
)
self._deny("/recordings/2026-05-11/14/front_door/00.00.mp4", "limited_user")
)
self.assertIsNone(
self._deny("/clips/thumbs/front_door/abc.webp", "limited_user")
)
def test_restricted_role_blocked_other_camera(self):
self.assertEqual(self._deny("/clips/back_door-1.jpg", "limited_user"), 403)
self.assertEqual(
self._deny("/clips/back_door-1.jpg", "limited_user"), 403
)
self.assertEqual(
self._deny(
"/recordings/2026-05-11/14/back_door/00.00.mp4", "limited_user"
),
self._deny("/recordings/2026-05-11/14/back_door/00.00.mp4", "limited_user"),
403,
)
self.assertEqual(
@ -262,16 +252,12 @@ class TestDenyResponseForMediaUri(unittest.TestCase):
)
def test_restricted_role_blocked_admin_only(self):
self.assertEqual(
self._deny("/clips/faces/train/foo.webp", "limited_user"), 403
)
self.assertEqual(self._deny("/clips/faces/train/foo.webp", "limited_user"), 403)
def test_restricted_role_blocked_multi_camera_listing(self):
self.assertEqual(self._deny("/clips/", "limited_user"), 403)
self.assertEqual(self._deny("/exports/", "limited_user"), 403)
self.assertEqual(
self._deny("/recordings/2026-05-11/14/", "limited_user"), 403
)
self.assertEqual(self._deny("/recordings/2026-05-11/14/", "limited_user"), 403)
def test_restricted_role_allowed_neutral_listing(self):
self.assertIsNone(self._deny("/recordings/", "limited_user"))