diff --git a/frigate/api/preview.py b/frigate/api/preview.py index 2db2326ab..531c1e09e 100644 --- a/frigate/api/preview.py +++ b/frigate/api/preview.py @@ -5,9 +5,10 @@ import os from datetime import datetime, timedelta, timezone import pytz -from fastapi import APIRouter +from fastapi import APIRouter, Depends from fastapi.responses import JSONResponse +from frigate.api.auth import require_camera_access from frigate.api.defs.tags import Tags from frigate.const import BASE_DIR, CACHE_DIR, PREVIEW_FRAME_TYPE from frigate.models import Previews @@ -18,7 +19,10 @@ logger = logging.getLogger(__name__) router = APIRouter(tags=[Tags.preview]) -@router.get("/preview/{camera_name}/start/{start_ts}/end/{end_ts}") +@router.get( + "/preview/{camera_name}/start/{start_ts}/end/{end_ts}", + dependencies=[Depends(require_camera_access)], +) def preview_ts(camera_name: str, start_ts: float, end_ts: float): """Get all mp4 previews relevant for time period.""" if camera_name != "all": @@ -71,7 +75,10 @@ def preview_ts(camera_name: str, start_ts: float, end_ts: float): return JSONResponse(content=clips, status_code=200) -@router.get("/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}") +@router.get( + "/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}", + dependencies=[Depends(require_camera_access)], +) def preview_hour(year_month: str, day: int, hour: int, camera_name: str, tz_name: str): """Get all mp4 previews relevant for time period given the timezone""" parts = year_month.split("-") @@ -86,7 +93,10 @@ def preview_hour(year_month: str, day: int, hour: int, camera_name: str, tz_name return preview_ts(camera_name, start_ts, end_ts) -@router.get("/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames") +@router.get( + "/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames", + dependencies=[Depends(require_camera_access)], +) def get_preview_frames_from_cache(camera_name: str, start_ts: float, end_ts: float): """Get list of cached preview frames""" preview_dir = os.path.join(CACHE_DIR, "preview_frames")