diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index ea4fea3c4..2d66e37b6 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -980,6 +980,35 @@ USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS = ( os.environ.get("USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS", "False").lower() == "true" ) +USER_PERMISSIONS_WORKSPACE_MODELS_ALLOW_PUBLIC_SHARING = ( + os.environ.get( + "USER_PERMISSIONS_WORKSPACE_MODELS_ALLOW_PUBLIC_SHARING", "False" + ).lower() + == "true" +) + +USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ALLOW_PUBLIC_SHARING = ( + os.environ.get( + "USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ALLOW_PUBLIC_SHARING", "False" + ).lower() + == "true" +) + +USER_PERMISSIONS_WORKSPACE_PROMPTS_ALLOW_PUBLIC_SHARING = ( + os.environ.get( + "USER_PERMISSIONS_WORKSPACE_PROMPTS_ALLOW_PUBLIC_SHARING", "False" + ).lower() + == "true" +) + +USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_PUBLIC_SHARING = ( + os.environ.get( + "USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_PUBLIC_SHARING", "False" + ).lower() + == "true" +) + + USER_PERMISSIONS_CHAT_CONTROLS = ( os.environ.get("USER_PERMISSIONS_CHAT_CONTROLS", "True").lower() == "true" ) @@ -1000,6 +1029,7 @@ USER_PERMISSIONS_CHAT_TEMPORARY = ( os.environ.get("USER_PERMISSIONS_CHAT_TEMPORARY", "True").lower() == "true" ) + USER_PERMISSIONS_FEATURES_WEB_SEARCH = ( os.environ.get("USER_PERMISSIONS_FEATURES_WEB_SEARCH", "True").lower() == "true" ) @@ -1022,6 +1052,12 @@ DEFAULT_USER_PERMISSIONS = { "prompts": USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS, "tools": USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS, }, + "sharing": { + "public_models": USER_PERMISSIONS_WORKSPACE_MODELS_ALLOW_PUBLIC_SHARING, + "public_knowledge": USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ALLOW_PUBLIC_SHARING, + "public_prompts": USER_PERMISSIONS_WORKSPACE_PROMPTS_ALLOW_PUBLIC_SHARING, + "public_tools": USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_PUBLIC_SHARING, + }, "chat": { "controls": USER_PERMISSIONS_CHAT_CONTROLS, "file_upload": USER_PERMISSIONS_CHAT_FILE_UPLOAD, diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index f5349faa3..825a39723 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -76,6 +76,13 @@ class WorkspacePermissions(BaseModel): tools: bool = False +class SharingPermissions(BaseModel): + public_models: bool = True + public_knowledge: bool = True + public_prompts: bool = True + public_tools: bool = True + + class ChatPermissions(BaseModel): controls: bool = True file_upload: bool = True @@ -92,6 +99,7 @@ class FeaturesPermissions(BaseModel): class UserPermissions(BaseModel): workspace: WorkspacePermissions + sharing: SharingPermissions chat: ChatPermissions features: FeaturesPermissions @@ -102,6 +110,9 @@ async def get_default_user_permissions(request: Request, user=Depends(get_admin_ "workspace": WorkspacePermissions( **request.app.state.config.USER_PERMISSIONS.get("workspace", {}) ), + "sharing": SharingPermissions( + **request.app.state.config.USER_PERMISSIONS.get("sharing", {}) + ), "chat": ChatPermissions( **request.app.state.config.USER_PERMISSIONS.get("chat", {}) ), diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index f41ac206b..157c8f7ca 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -13,6 +13,12 @@ prompts: false, tools: false }, + sharing: { + public_models: false, + public_knowledge: false, + public_prompts: false, + public_tools: false + }, chat: { controls: true, delete: true, @@ -39,6 +45,7 @@ ...defaults, ...obj, workspace: { ...defaults.workspace, ...obj.workspace }, + sharing: { ...defaults.sharing, ...obj.sharing }, chat: { ...defaults.chat, ...obj.chat }, features: { ...defaults.features, ...obj.features } }; @@ -194,6 +201,40 @@
+
+
{$i18n.t('Sharing Permissions')}
+ +
+
+ {$i18n.t('Models Public Sharing')} +
+ +
+ +
+
+ {$i18n.t('Knowledge Public Sharing')} +
+ +
+ +
+
+ {$i18n.t('Prompts Public Sharing')} +
+ +
+ +
+
+ {$i18n.t('Tools Public Sharing')} +
+ +
+
+ +
+
{$i18n.t('Chat Permissions')}