diff --git a/docs/docs/configuration/authentication.md b/docs/docs/configuration/authentication.md index 143c17e74..97fcb3721 100644 --- a/docs/docs/configuration/authentication.md +++ b/docs/docs/configuration/authentication.md @@ -52,6 +52,21 @@ auth: - 172.18.0.0/16 # <---- this is the subnet for the internal Docker Compose network ``` +## Session Length + +The default session length for user authentication in Frigate is 24 hours. This setting determines how long a user's authenticated session remains active before a token refresh is required — otherwise, the user will need to log in again. + +While the default provides a balance of security and convenience, you can customize this duration to suit your specific security requirements and user experience preferences. The session length is configured in seconds. + +The default value of `86400` will expire the authentication session after 24 hours. Some other examples: +- `0`: Setting the session length to 0 will require a user to log in every time they access the application or after a very short, immediate timeout. +- `604800`: Setting the session length to 604800 will require a user to log in if the token is not refreshed for 7 days. + +```yaml +auth: + session_length: 86400 +``` + ## JWT Token Secret The JWT token secret needs to be kept secure. Anyone with this secret can generate valid JWT tokens to authenticate with Frigate. This should be a cryptographically random string of at least 64 characters. diff --git a/frigate/data_processing/common/license_plate/mixin.py b/frigate/data_processing/common/license_plate/mixin.py index d0888bd74..55cd002a2 100644 --- a/frigate/data_processing/common/license_plate/mixin.py +++ b/frigate/data_processing/common/license_plate/mixin.py @@ -167,6 +167,8 @@ class LicensePlateProcessingMixin: outputs = self.model_runner.recognition_model(norm_images) except Exception as e: logger.warning(f"Error running LPR recognition model: {e}") + return [], [] + return self.ctc_decoder(outputs) def _process_license_plate( diff --git a/frigate/data_processing/real_time/face.py b/frigate/data_processing/real_time/face.py index 2bd8546a6..f6a25080e 100644 --- a/frigate/data_processing/real_time/face.py +++ b/frigate/data_processing/real_time/face.py @@ -6,6 +6,7 @@ import json import logging import os import shutil +from pathlib import Path from typing import Any, Optional import cv2 @@ -538,4 +539,4 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): # delete oldest face image if maximum is reached if len(files) > self.config.face_recognition.save_attempts: - os.unlink(os.path.join(folder, files[-1])) + Path(os.path.join(folder, files[-1])).unlink(missing_ok=True) diff --git a/web/src/components/graph/LineGraph.tsx b/web/src/components/graph/LineGraph.tsx index 76c9c2ce3..ad841dea2 100644 --- a/web/src/components/graph/LineGraph.tsx +++ b/web/src/components/graph/LineGraph.tsx @@ -106,6 +106,9 @@ export function CameraLineGraph({ labels: { rotate: 0, formatter: formatTime, + style: { + colors: "#6B6B6B", + }, }, axisBorder: { show: false, @@ -118,6 +121,9 @@ export function CameraLineGraph({ show: true, labels: { formatter: (val: number) => Math.ceil(val).toString(), + style: { + colors: "#6B6B6B", + }, }, min: 0, }, @@ -138,7 +144,7 @@ export function CameraLineGraph({ className="size-2" style={{ color: GRAPH_COLORS[labelIdx] }} /> -