diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 02f61696e..0bafc98ae 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1034,6 +1034,11 @@ USER_PERMISSIONS_CHAT_TEMPORARY_ENFORCED = ( == "true" ) +USER_PERMISSIONS_FEATURES_DIRECT_TOOL_SERVERS = ( + os.environ.get("USER_PERMISSIONS_FEATURES_DIRECT_TOOL_SERVERS", "False").lower() + == "true" +) + USER_PERMISSIONS_FEATURES_WEB_SEARCH = ( os.environ.get("USER_PERMISSIONS_FEATURES_WEB_SEARCH", "True").lower() == "true" ) @@ -1071,6 +1076,7 @@ DEFAULT_USER_PERMISSIONS = { "temporary_enforced": USER_PERMISSIONS_CHAT_TEMPORARY_ENFORCED, }, "features": { + "direct_tool_servers": USER_PERMISSIONS_FEATURES_DIRECT_TOOL_SERVERS, "web_search": USER_PERMISSIONS_FEATURES_WEB_SEARCH, "image_generation": USER_PERMISSIONS_FEATURES_IMAGE_GENERATION, "code_interpreter": USER_PERMISSIONS_FEATURES_CODE_INTERPRETER, diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index 4cf9102e1..d1046bced 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -93,6 +93,7 @@ class ChatPermissions(BaseModel): class FeaturesPermissions(BaseModel): + direct_tool_servers: bool = False web_search: bool = True image_generation: bool = True code_interpreter: bool = True diff --git a/src/lib/components/admin/Users/Groups.svelte b/src/lib/components/admin/Users/Groups.svelte index e2375a624..e287feb1d 100644 --- a/src/lib/components/admin/Users/Groups.svelte +++ b/src/lib/components/admin/Users/Groups.svelte @@ -67,6 +67,7 @@ temporary_enforced: false }, features: { + direct_tool_servers: false, web_search: true, image_generation: true, code_interpreter: true diff --git a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte index e492cc9b6..5b6bf6aab 100644 --- a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte +++ b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte @@ -38,6 +38,12 @@ prompts: false, tools: false }, + sharing: { + public_models: false, + public_knowledge: false, + public_prompts: false, + public_tools: false + }, chat: { controls: true, file_upload: true, @@ -46,6 +52,7 @@ temporary: true }, features: { + direct_tool_servers: false, web_search: true, image_generation: true, code_interpreter: true diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index 389477166..5dac0de94 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -28,6 +28,7 @@ temporary_enforced: false }, features: { + direct_tool_servers: false, web_search: true, image_generation: true, code_interpreter: true @@ -295,6 +296,14 @@
{$i18n.t('Features Permissions')}
+
+
+ {$i18n.t('Direct Tool Servers')} +
+ + +
+
{$i18n.t('Web Search')} diff --git a/src/lib/components/chat/SettingsModal.svelte b/src/lib/components/chat/SettingsModal.svelte index 15bf9c0ba..ed2e9eb7a 100644 --- a/src/lib/components/chat/SettingsModal.svelte +++ b/src/lib/components/chat/SettingsModal.svelte @@ -488,7 +488,7 @@ {/if} {:else if tabId === 'tools'} - {#if $user?.role === 'admin' || ($user?.role === 'user' && $config?.features?.enable_direct_tools)} + {#if $user?.role === 'admin' || ($user?.role === 'user' && $user?.permissions?.features?.direct_tool_servers)}