This commit is contained in:
Josh Hawkins 2026-03-11 08:22:40 -05:00
parent 2d1825698a
commit ad5eca14f9

View File

@ -17,6 +17,7 @@ from titlecase import titlecase
from frigate.comms.base_communicator import Communicator from frigate.comms.base_communicator import Communicator
from frigate.comms.config_updater import ConfigSubscriber from frigate.comms.config_updater import ConfigSubscriber
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
from frigate.config.auth import AuthConfig
from frigate.config.camera.updater import ( from frigate.config.camera.updater import (
CameraConfigUpdateEnum, CameraConfigUpdateEnum,
CameraConfigUpdateSubscriber, CameraConfigUpdateSubscriber,
@ -174,7 +175,7 @@ class WebPushClient(Communicator):
if config_topic == "config/notifications" and config_payload: if config_topic == "config/notifications" and config_payload:
self.config.notifications = config_payload self.config.notifications = config_payload
elif config_topic == "config/auth": elif config_topic == "config/auth":
if config_payload: if isinstance(config_payload, AuthConfig):
self.config.auth = config_payload self.config.auth = config_payload
self._refresh_user_cameras() self._refresh_user_cameras()
@ -301,17 +302,16 @@ class WebPushClient(Communicator):
"""Rebuild the user-to-cameras access cache from the database.""" """Rebuild the user-to-cameras access cache from the database."""
all_camera_names = set(self.config.cameras.keys()) all_camera_names = set(self.config.cameras.keys())
roles_dict = self.config.auth.roles roles_dict = self.config.auth.roles
users: list[dict[str, Any]] = (
User.select(User.username, User.role).dicts().iterator()
)
updated: dict[str, set[str]] = {} updated: dict[str, set[str]] = {}
for user in users: for user in User.select(User.username, User.role).dicts().iterator():
allowed = User.get_allowed_cameras( allowed = User.get_allowed_cameras(
user["role"], roles_dict, all_camera_names user["role"], roles_dict, all_camera_names
) )
updated[user["username"]] = set(allowed) updated[user["username"]] = set(allowed)
logger.debug( logger.debug(
f"User {user['username']} has access to cameras: {', '.join(allowed)}" "User %s has access to cameras: %s",
user["username"],
", ".join(allowed),
) )
self.user_cameras = updated self.user_cameras = updated