From 502813c6c80a770669f8be21c8b0908f3a5fb6c7 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 Jan 2026 20:01:10 +0100 Subject: [PATCH] chore: aggregation (#20430) * Update EditGroupModal.svelte * Update Permissions.svelte * Create permissions.ts --- .../admin/Users/Groups/EditGroupModal.svelte | 72 +++---------------- .../admin/Users/Groups/Permissions.svelte | 62 +--------------- src/lib/constants/permissions.ts | 60 ++++++++++++++++ 3 files changed, 72 insertions(+), 122 deletions(-) create mode 100644 src/lib/constants/permissions.ts diff --git a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte index daf056d598..791aa9f0fc 100644 --- a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte +++ b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte @@ -8,6 +8,7 @@ import General from './General.svelte'; import Permissions from './Permissions.svelte'; import Users from './Users.svelte'; + import { DEFAULT_PERMISSIONS } from '$lib/constants/permissions'; import UserPlusSolid from '$lib/components/icons/UserPlusSolid.svelte'; import WrenchSolid from '$lib/components/icons/WrenchSolid.svelte'; import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; @@ -36,66 +37,7 @@ export let description = ''; export let data = {}; - export let permissions = { - workspace: { - models: false, - knowledge: false, - prompts: false, - tools: false, - models_import: false, - models_export: false, - prompts_import: false, - prompts_export: false, - tools_import: false, - tools_export: false - }, - sharing: { - models: false, - public_models: false, - knowledge: false, - public_knowledge: false, - prompts: false, - public_prompts: false, - tools: false, - public_tools: false, - notes: false, - public_notes: false - }, - chat: { - controls: true, - valves: true, - system_prompt: true, - params: true, - file_upload: true, - delete: true, - delete_message: true, - continue_response: true, - regenerate_response: true, - rate_response: true, - edit: true, - share: true, - export: true, - stt: true, - tts: true, - call: true, - multiple_models: true, - temporary: true, - temporary_enforced: false - }, - features: { - api_keys: false, - notes: true, - channels: true, - folders: true, - direct_tool_servers: false, - web_search: true, - image_generation: true, - code_interpreter: true - }, - settings: { - interface: true - } - }; + export let permissions = DEFAULT_PERMISSIONS; const submitHandler = async () => { loading = true; @@ -117,7 +59,15 @@ if (group) { name = group.name; description = group.description; - permissions = group?.permissions ?? {}; + const loadedPermissions = group?.permissions ?? {}; + // Create fresh object from defaults, then overlay loaded values + permissions = { + workspace: { ...DEFAULT_PERMISSIONS.workspace, ...loadedPermissions.workspace }, + sharing: { ...DEFAULT_PERMISSIONS.sharing, ...loadedPermissions.sharing }, + chat: { ...DEFAULT_PERMISSIONS.chat, ...loadedPermissions.chat }, + features: { ...DEFAULT_PERMISSIONS.features, ...loadedPermissions.features }, + settings: { ...DEFAULT_PERMISSIONS.settings, ...loadedPermissions.settings } + }; data = group?.data ?? {}; userCount = group?.member_count ?? 0; diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index db73ca3bee..28b7b4c2c8 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -5,67 +5,7 @@ import Switch from '$lib/components/common/Switch.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; - // Default values for permissions - const DEFAULT_PERMISSIONS = { - workspace: { - models: false, - knowledge: false, - prompts: false, - tools: false, - models_import: false, - models_export: false, - prompts_import: false, - prompts_export: false, - tools_import: false, - tools_export: false - }, - sharing: { - models: false, - public_models: false, - knowledge: false, - public_knowledge: false, - prompts: false, - public_prompts: false, - tools: false, - public_tools: false, - notes: false, - public_notes: false - }, - chat: { - controls: true, - valves: true, - system_prompt: true, - params: true, - file_upload: true, - delete: true, - delete_message: true, - continue_response: true, - regenerate_response: true, - rate_response: true, - edit: true, - share: true, - export: true, - stt: true, - tts: true, - call: true, - multiple_models: true, - temporary: true, - temporary_enforced: false - }, - features: { - api_keys: false, - notes: true, - channels: true, - folders: true, - direct_tool_servers: false, - web_search: true, - image_generation: true, - code_interpreter: true - }, - settings: { - interface: true - } - }; + import { DEFAULT_PERMISSIONS } from '$lib/constants/permissions'; export let permissions = {}; export let defaultPermissions = {}; diff --git a/src/lib/constants/permissions.ts b/src/lib/constants/permissions.ts new file mode 100644 index 0000000000..d40cda0908 --- /dev/null +++ b/src/lib/constants/permissions.ts @@ -0,0 +1,60 @@ +export const DEFAULT_PERMISSIONS = { + workspace: { + models: false, + knowledge: false, + prompts: false, + tools: false, + models_import: false, + models_export: false, + prompts_import: false, + prompts_export: false, + tools_import: false, + tools_export: false + }, + sharing: { + models: false, + public_models: false, + knowledge: false, + public_knowledge: false, + prompts: false, + public_prompts: false, + tools: false, + public_tools: false, + notes: false, + public_notes: false + }, + chat: { + controls: true, + valves: true, + system_prompt: true, + params: true, + file_upload: true, + delete: true, + delete_message: true, + continue_response: true, + regenerate_response: true, + rate_response: true, + edit: true, + share: true, + export: true, + stt: true, + tts: true, + call: true, + multiple_models: true, + temporary: true, + temporary_enforced: false + }, + features: { + api_keys: false, + notes: true, + channels: true, + folders: true, + direct_tool_servers: false, + web_search: true, + image_generation: true, + code_interpreter: true + }, + settings: { + interface: true + } +} as const;