From 135a8d7a45cea985fd5328db7d42d3dde9f6a8f1 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sun, 13 Nov 2022 02:41:42 -0800 Subject: [PATCH] Retrieve serverfolders by permission --- server/services/servers.service.ts | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/server/services/servers.service.ts b/server/services/servers.service.ts index 865d7de14..4441744e6 100644 --- a/server/services/servers.service.ts +++ b/server/services/servers.service.ts @@ -1,4 +1,4 @@ -import { ServerType, TaskType } from '@prisma/client'; +import { ServerPermissionType, ServerType, TaskType } from '@prisma/client'; import { SortOrder } from '@/types/types'; import { helpers } from '../helpers'; import { prisma } from '../lib'; @@ -116,13 +116,7 @@ const findMany = async (user: AuthUser, options?: { enabled?: boolean }) => { orderBy: { createdAt: SortOrder.ASC }, where: { userId: user.id }, }, - serverUrls: { - include: { - userServerUrls: { - where: { userId: user.id }, - }, - }, - }, + serverUrls: true, }, orderBy: { createdAt: SortOrder.ASC }, }); @@ -133,8 +127,17 @@ const findMany = async (user: AuthUser, options?: { enabled?: boolean }) => { serverFolders: { orderBy: { name: SortOrder.ASC }, where: { - AND: [ - { id: { in: user.flatServerFolderPermissions } }, + OR: [ + // Show all folders if user has server admin permissions + { + server: { + serverPermissions: { + some: { type: ServerPermissionType.ADMIN, userId: user.id }, + }, + }, + }, + // If not admin, only show folders the user has permissions for + { serverFolderPermissions: { some: { userId: user.id } } }, { enabled: options?.enabled ? true : undefined }, ], }, @@ -146,7 +149,7 @@ const findMany = async (user: AuthUser, options?: { enabled?: boolean }) => { serverUrls: true, }, orderBy: { createdAt: SortOrder.ASC }, - where: { id: { in: user.flatServerPermissions } }, + where: { serverPermissions: { some: { userId: user.id } } }, }); return servers;