From e3b72642086e7c07b2153b7061cd4b99ac69c152 Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:51:22 +0100 Subject: [PATCH] fix: filter and listMember handler (#14429) * fix: filter and listMember handler * Update packages/trpc/server/routers/viewer/teams/listMembers.handler.ts Co-authored-by: Keith Williams * Update packages/features/bookings/components/PeopleFilter.tsx --------- Co-authored-by: Keith Williams --- packages/features/bookings/components/PeopleFilter.tsx | 8 ++++++++ .../server/routers/viewer/teams/listMembers.handler.ts | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/packages/features/bookings/components/PeopleFilter.tsx b/packages/features/bookings/components/PeopleFilter.tsx index 445ab8c917..f37e23eb70 100644 --- a/packages/features/bookings/components/PeopleFilter.tsx +++ b/packages/features/bookings/components/PeopleFilter.tsx @@ -15,6 +15,10 @@ export const PeopleFilter = () => { const { t } = useLocale(); const orgBranding = useOrgBranding(); + const { data: currentOrg } = trpc.viewer.organizations.listCurrent.useQuery(); + const isAdmin = currentOrg?.user.role === "ADMIN" || currentOrg?.user.role === "OWNER"; + const hasPermToView = !currentOrg?.isPrivate || isAdmin; + const { data: query, pushItemToKey, removeItemByKeyAndValue, removeAllQueryParams } = useFilterQuery(); const [searchText, setSearchText] = useState(""); @@ -37,6 +41,10 @@ export const PeopleFilter = () => { return `${t("all")}`; }; + if (!hasPermToView) { + return null; + } + return ( diff --git a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts index 1c12a4ec4d..5c92afe940 100644 --- a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts @@ -14,6 +14,13 @@ type ListMembersOptions = { export const listMembersHandler = async ({ ctx, input }: ListMembersOptions) => { const { prisma } = ctx; + const { isOrgAdmin } = ctx.user.organization; + const hasPermsToView = !ctx.user.organization.isPrivate || isOrgAdmin; + + if (!hasPermsToView) { + return []; + } + const teams = await prisma.team.findMany({ where: { id: {