From 886f313c0b52951f258c9d8e236d8a0a16086bff Mon Sep 17 00:00:00 2001 From: TheLastFrame <16117728+TheLastFrame@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:49:22 +0100 Subject: [PATCH] feat: use MemeberSelector for AccessControl --- backend/open_webui/routers/groups.py | 2 +- .../workspace/common/AccessControl.svelte | 213 +----------------- .../workspace/common/MemberSelector.svelte | 177 ++++++++++++--- 3 files changed, 155 insertions(+), 237 deletions(-) diff --git a/backend/open_webui/routers/groups.py b/backend/open_webui/routers/groups.py index 7d2efcf899..3ac03fe2a4 100755 --- a/backend/open_webui/routers/groups.py +++ b/backend/open_webui/routers/groups.py @@ -78,7 +78,7 @@ async def create_new_group(form_data: GroupForm, user=Depends(get_admin_user)): @router.get("/id/{id}", response_model=Optional[GroupResponse]) -async def get_group_by_id(id: str, user=Depends(get_admin_user)): +async def get_group_by_id(id: str, user=Depends(get_verified_user)): group = Groups.get_group_by_id(id) if group: return GroupResponse( diff --git a/src/lib/components/workspace/common/AccessControl.svelte b/src/lib/components/workspace/common/AccessControl.svelte index 59ccb653ff..ac1b3d3a06 100644 --- a/src/lib/components/workspace/common/AccessControl.svelte +++ b/src/lib/components/workspace/common/AccessControl.svelte @@ -3,12 +3,11 @@ const i18n = getContext('i18n'); - import { getGroups } from '$lib/apis/groups'; - import { getAllUsers } from '$lib/apis/users'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import Plus from '$lib/components/icons/Plus.svelte'; import UserCircleSolid from '$lib/components/icons/UserCircleSolid.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; + import MemberSelector from '$lib/components/workspace/common/MemberSelector.svelte'; import Badge from '$lib/components/common/Badge.svelte'; export let onChange: Function = () => {}; @@ -19,11 +18,6 @@ export let share = true; export let sharePublic = true; - let selectedGroupId = ''; - let groups = []; - - let selectedUserId = ''; - let users = []; $: if (!sharePublic && accessControl === null) { initPublicAccess(); @@ -45,10 +39,8 @@ } }; + onMount(async () => { - groups = await getGroups(localStorage.token, true); - users = await getAllUsers(localStorage.token); - users = users?.users ?? []; if (accessControl === null) { initPublicAccess(); @@ -150,214 +142,21 @@ {#if share} {#if accessControl !== null} - {@const accessGroups = groups.filter((group) => - (accessControl?.read?.group_ids ?? []).includes(group.id) - )} -