diff --git a/app/components/FlowEditor.vue b/app/components/FlowEditor.vue index a8e265a..9d3fd67 100644 --- a/app/components/FlowEditor.vue +++ b/app/components/FlowEditor.vue @@ -718,7 +718,9 @@ onMounted(async () => { // Load groups for assignment try { - const data = await $fetch('/api/groups') + const data = await $fetch('/api/user/groups', { + headers: authHeaders.value + }) groupsList.value = data.groups || [] } catch (e) { console.error('Failed to load groups', e) diff --git a/app/server/api/user/groups.get.ts b/app/server/api/user/groups.get.ts index 093f8a4..4c9d9a4 100644 --- a/app/server/api/user/groups.get.ts +++ b/app/server/api/user/groups.get.ts @@ -1,18 +1,21 @@ import { requireAuth } from '~/server/utils/auth' -import { userGroups, groups } from '~/server/utils/db' +import { prisma } from '~/server/utils/prisma' export default defineEventHandler(async (event) => { const user = requireAuth(event) - // Get all groups the user is a member of - const userGroupMemberships = Array.from(userGroups.values()).filter( - membership => membership.userId === user.id - ) + // Находим группы, где пользователь либо владелец, либо участник + const groups = await prisma.group.findMany({ + where: { + OR: [ + { ownerId: user.id }, + { members: { some: { userId: user.id } } } + ] + }, + orderBy: { + name: 'asc' + } + }) - const userGroupsData = userGroupMemberships.map(membership => { - const group = groups.get(membership.groupId) - return group ? { ...group, membershipRole: membership.role } : null - }).filter(Boolean) - - return { groups: userGroupsData } + return { groups } })