diff --git a/src/pages/api/users/[userId]/usage.ts b/src/pages/api/users/[userId]/usage.ts index 66e92768..9d2bc37e 100644 --- a/src/pages/api/users/[userId]/usage.ts +++ b/src/pages/api/users/[userId]/usage.ts @@ -2,7 +2,7 @@ import { useAuth, useCors, useValidate } from 'lib/middleware'; import { NextApiRequestQueryBody } from 'lib/types'; import { NextApiResponse } from 'next'; import { methodNotAllowed, ok, unauthorized } from 'next-basics'; -import { getAllWebsites, getEventDataUsage, getEventUsage } from 'queries'; +import { getAllUserWebsitesIncludingTeamOwner, getEventDataUsage, getEventUsage } from 'queries'; import * as yup from 'yup'; export interface UserUsageRequestQuery { @@ -50,7 +50,7 @@ export default async ( const startDate = new Date(+startAt); const endDate = new Date(+endAt); - const websites = await getAllWebsites(userId); + const websites = await getAllUserWebsitesIncludingTeamOwner(userId); const websiteIds = websites.map(a => a.id); diff --git a/src/queries/admin/website.ts b/src/queries/admin/website.ts index d191aa65..37dd5f48 100644 --- a/src/queries/admin/website.ts +++ b/src/queries/admin/website.ts @@ -3,6 +3,7 @@ import redis from '@umami/redis-client'; import prisma from 'lib/prisma'; import { PageResult, PageParams } from 'lib/types'; import WebsiteFindManyArgs = Prisma.WebsiteFindManyArgs; +import { ROLES } from 'lib/constants'; async function findWebsite(criteria: Prisma.WebsiteFindUniqueArgs): Promise { return prisma.client.website.findUnique(criteria); @@ -52,6 +53,27 @@ export async function getAllWebsites(userId: string) { }); } +export async function getAllUserWebsitesIncludingTeamOwner(userId: string) { + return prisma.client.website.findMany({ + where: { + OR: [ + { userId }, + { + team: { + deletedAt: null, + teamUser: { + some: { + role: ROLES.teamOwner, + userId, + }, + }, + }, + }, + ], + }, + }); +} + export async function getUserWebsites( userId: string, filters?: PageParams,