(
+
+ {t("group.roles.label", { defaultValue: "Roles" })}
+
+ {t("group.roles.desc", {
+ defaultValue:
+ "Select which roles can see this camera group. If no roles selected, group is only visible to admins.",
+ })}
+
+
+ {Object.keys(config.auth.roles)
+ .filter((role) => role !== "admin")
+ .map((role) => (
+
+
+
+ {role}
+
+ {
+ const updatedRoles = checked
+ ? [...(field.value || []), role]
+ : (field.value || []).filter((r) => r !== role);
+ form.setValue("roles", updatedRoles);
+ }}
+ />
+
+
+ ))}
+
+ )}
+ />
+ >
+ )}
+
diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts
index 3d7f18ddd..ac1e44f6a 100644
--- a/web/src/types/frigateConfig.ts
+++ b/web/src/types/frigateConfig.ts
@@ -345,6 +345,7 @@ export type CameraGroupConfig = {
cameras: string[];
icon: IconName;
order: number;
+ roles?: string[];
};
export type StreamType = "no-streaming" | "smart" | "continuous";