From 538501c88da034434bcd1969f15341dbbaf154e4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 24 Feb 2026 15:19:49 -0600 Subject: [PATCH] refac --- backend/open_webui/config.py | 11 ++++++++++ backend/open_webui/models/groups.py | 21 ++++++++++++++++++- .../admin/Users/Groups/General.svelte | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index b276f9de90..5c45b9f35a 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1287,6 +1287,17 @@ DEFAULT_GROUP_ID = PersistentConfig( os.environ.get("DEFAULT_GROUP_ID", ""), ) +# Controls the default "Who can share to this group" setting for new groups. +# Env var values: "true" (anyone), "false" (no one), "members" (only group members). +_default_group_share = os.environ.get( + "DEFAULT_GROUP_SHARE_PERMISSION", "members" +).strip().lower() +DEFAULT_GROUP_SHARE_PERMISSION = ( + "members" + if _default_group_share == "members" + else _default_group_share == "true" +) + PENDING_USER_OVERLAY_TITLE = PersistentConfig( "PENDING_USER_OVERLAY_TITLE", "ui.pending_user_overlay_title", diff --git a/backend/open_webui/models/groups.py b/backend/open_webui/models/groups.py index c9a38f1ede..ff6d61b929 100644 --- a/backend/open_webui/models/groups.py +++ b/backend/open_webui/models/groups.py @@ -6,6 +6,7 @@ import uuid from sqlalchemy.orm import Session from open_webui.internal.db import Base, JSONField, get_db, get_db_context +from open_webui.config import DEFAULT_GROUP_SHARE_PERMISSION from open_webui.models.files import FileMetadataResponse @@ -130,13 +131,26 @@ class GroupListResponse(BaseModel): class GroupTable: + def _ensure_default_share_config(self, group_data: dict) -> dict: + """Ensure the group data dict has a default share config if not already set.""" + if "data" not in group_data or group_data["data"] is None: + group_data["data"] = {} + if "config" not in group_data["data"]: + group_data["data"]["config"] = {} + if "share" not in group_data["data"]["config"]: + group_data["data"]["config"]["share"] = DEFAULT_GROUP_SHARE_PERMISSION + return group_data + def insert_new_group( self, user_id: str, form_data: GroupForm, db: Optional[Session] = None ) -> Optional[GroupModel]: with get_db_context(db) as db: + group_data = self._ensure_default_share_config( + form_data.model_dump(exclude_none=True) + ) group = GroupModel( **{ - **form_data.model_dump(exclude_none=True), + **group_data, "id": str(uuid.uuid4()), "user_id": user_id, "created_at": int(time.time()), @@ -504,6 +518,11 @@ class GroupTable: user_id=user_id, name=group_name, description="", + data={ + "config": { + "share": DEFAULT_GROUP_SHARE_PERMISSION, + } + }, created_at=int(time.time()), updated_at=int(time.time()), ) diff --git a/src/lib/components/admin/Users/Groups/General.svelte b/src/lib/components/admin/Users/Groups/General.svelte index 4d32b3148b..16a04acd06 100644 --- a/src/lib/components/admin/Users/Groups/General.svelte +++ b/src/lib/components/admin/Users/Groups/General.svelte @@ -78,7 +78,7 @@