From 8852d460b7009f776a131e88cbf0cbad595a16d8 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sat, 24 Oct 2026 07:44:47 +0200 Subject: [PATCH] fix: group permission toggles show while their feature is off (#32983) Users > Groups and the default permissions showed toggles such as Web Search, Channels, Notes, API Keys or Rate Response even when the admin had turned that feature off for the whole instance, so changing them did nothing. Each of these toggles, and the sharing toggles for notes, folders and calendars, now only shows while its feature is on. Stored permission values are kept, so turning a feature back on restores each group's setting. Refs #32830 --- .../admin/Users/Groups/Permissions.svelte | 527 ++++++++++-------- 1 file changed, 281 insertions(+), 246 deletions(-) diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index 4016d0d2eb..770c00dfe1 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -422,34 +422,54 @@ {/if} -
-
-
- {$i18n.t('Notes Sharing')} -
- -
- {#if defaultPermissions?.sharing?.notes && !permissions.sharing.notes} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
- - {#if permissions.sharing.notes} + {#if $config?.features?.enable_notes}
- {$i18n.t('Notes Public Sharing')} + {$i18n.t('Notes Sharing')}
- +
- {#if defaultPermissions?.sharing?.public_notes && !permissions.sharing.public_notes} + {#if defaultPermissions?.sharing?.notes && !permissions.sharing.notes} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if} +
+ + {#if permissions.sharing.notes} +
+
+
+ {$i18n.t('Notes Public Sharing')} +
+ +
+ {#if defaultPermissions?.sharing?.public_notes && !permissions.sharing.public_notes} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if} +
+ {/if} + {/if} + + {#if $config?.features?.enable_folders} +
+
+
+ {$i18n.t('Folders Sharing')} +
+ +
+ {#if defaultPermissions?.sharing?.folders && !permissions.sharing.folders}
{$i18n.t('This is a default user permission and will remain enabled.')} @@ -459,22 +479,6 @@
{/if} -
-
-
- {$i18n.t('Folders Sharing')} -
- -
- {#if defaultPermissions?.sharing?.folders && !permissions.sharing.folders} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
- {#if permissions.chat.share}
@@ -515,7 +519,7 @@
{/if} - {#if permissions.features.calendar} + {#if $config?.features?.enable_calendar && permissions.features.calendar}
@@ -779,24 +783,26 @@ {/if}
-
-
-
- {$i18n.t('Allow Rate Response')} -
- -
- {#if defaultPermissions?.chat?.rate_response && !permissions.chat.rate_response} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} + {#if $config?.features?.enable_message_rating} +
+
+
+ {$i18n.t('Allow Rate Response')}
+
- {/if} -
+ {#if defaultPermissions?.chat?.rate_response && !permissions.chat.rate_response} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if} +
+ {/if}
@@ -959,231 +965,260 @@
{$i18n.t('Features Permissions')}
-
-
-
- {$i18n.t('API Keys')} + {#if $config?.features?.enable_api_keys} +
+
+
+ {$i18n.t('API Keys')} +
+
- + {#if defaultPermissions?.features?.api_keys && !permissions.features.api_keys} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.api_keys && !permissions.features.api_keys} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Notes')} + {#if $config?.features?.enable_notes} +
+
+
+ {$i18n.t('Notes')} +
+
- + {#if defaultPermissions?.features?.notes && !permissions.features.notes} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.notes && !permissions.features.notes} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Channels')} + {#if $config?.features?.enable_channels} +
+
+
+ {$i18n.t('Channels')} +
+
- + {#if defaultPermissions?.features?.channels && !permissions.features.channels} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.channels && !permissions.features.channels} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Encrypted Channels')} + {#if $config?.features?.enable_channels && $config?.features?.enable_encrypted_channels} +
+
+
+ {$i18n.t('Encrypted Channels')} +
+
- + {#if defaultPermissions?.features?.encrypted_channels && !permissions.features.encrypted_channels} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.encrypted_channels && !permissions.features.encrypted_channels} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Folders')} + {#if $config?.features?.enable_folders} +
+
+
+ {$i18n.t('Folders')} +
+
- + {#if defaultPermissions?.features?.folders && !permissions.features.folders} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.folders && !permissions.features.folders} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Direct Tool Servers')} + {#if $config?.features?.enable_direct_integrations} +
+
+
+ {$i18n.t('Direct Tool Servers')} +
+
- + {#if defaultPermissions?.features?.direct_tool_servers && !permissions.features.direct_tool_servers} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.direct_tool_servers && !permissions.features.direct_tool_servers} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Web Search')} + {#if $config?.features?.enable_web_search} +
+
+
+ {$i18n.t('Web Search')} +
+
- + {#if defaultPermissions?.features?.web_search && !permissions.features.web_search} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.web_search && !permissions.features.web_search} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Image Generation')} + {#if $config?.features?.enable_image_generation} +
+
+
+ {$i18n.t('Image Generation')} +
+
- + {#if defaultPermissions?.features?.image_generation && !permissions.features.image_generation} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.image_generation && !permissions.features.image_generation} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Code Interpreter')} + {#if $config?.features?.enable_code_interpreter} +
+
+
+ {$i18n.t('Code Interpreter')} +
+
- + {#if defaultPermissions?.features?.code_interpreter && !permissions.features.code_interpreter} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.code_interpreter && !permissions.features.code_interpreter} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('Memories')} + {#if $config?.features?.enable_memories} +
+
+
+ {$i18n.t('Memories')} +
+
- + {#if defaultPermissions?.features?.memories && !permissions.features.memories} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.memories && !permissions.features.memories} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
- -
- {$i18n.t('Automations')} -
- -
- {#if defaultPermissions?.features?.automations && !permissions.features.automations} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} + {#if $config?.features?.enable_automations} +
+ +
+ {$i18n.t('Automations')}
-
- {/if} -
- -
-
-
- {$i18n.t('Calendar')} -
- + + + {#if defaultPermissions?.features?.automations && !permissions.features.automations} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if}
- {#if defaultPermissions?.features?.calendar && !permissions.features.calendar} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} -
-
- {/if} -
+ {/if} -
-
-
- {$i18n.t('User Webhooks')} -
- -
- {#if defaultPermissions?.features?.webhooks && !permissions.features.webhooks} -
-
- {$i18n.t('This is a default user permission and will remain enabled.')} + {#if $config?.features?.enable_calendar} +
+
+
+ {$i18n.t('Calendar')}
+
- {/if} -
+ {#if defaultPermissions?.features?.calendar && !permissions.features.calendar} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if} +
+ {/if} + + {#if $config?.features?.enable_user_webhooks} +
+
+
+ {$i18n.t('User Webhooks')} +
+ +
+ {#if defaultPermissions?.features?.webhooks && !permissions.features.webhooks} +
+
+ {$i18n.t('This is a default user permission and will remain enabled.')} +
+
+ {/if} +
+ {/if}