diff --git a/packages/app-store/routing-forms/api/responses/[formId].ts b/packages/app-store/routing-forms/api/responses/[formId].ts index 19af9ce706..00b0edafce 100644 --- a/packages/app-store/routing-forms/api/responses/[formId].ts +++ b/packages/app-store/routing-forms/api/responses/[formId].ts @@ -3,7 +3,7 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { getSession } from "next-auth/react"; import { sanitizeValue } from "@calcom/lib/csvUtils"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; import prisma from "@calcom/prisma"; import { getSerializableForm } from "../../lib/getSerializableForm"; diff --git a/packages/app-store/routing-forms/lib/getSerializableForm.ts b/packages/app-store/routing-forms/lib/getSerializableForm.ts index 8309a4eadb..f2695edf51 100644 --- a/packages/app-store/routing-forms/lib/getSerializableForm.ts +++ b/packages/app-store/routing-forms/lib/getSerializableForm.ts @@ -1,7 +1,7 @@ import type { App_RoutingForms_Form } from "@prisma/client"; import type { z } from "zod"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { RoutingFormSettings } from "@calcom/prisma/zod-utils"; diff --git a/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts b/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts index a454da3645..d138012511 100644 --- a/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts +++ b/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts @@ -1,6 +1,6 @@ import type { App_RoutingForms_Form, User } from "@prisma/client"; -import { canCreateEntity, canEditEntity } from "@calcom/lib/entityPermissionUtils"; +import { canCreateEntity, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; import prisma from "@calcom/prisma"; export async function isFormCreateEditAllowed({ diff --git a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx index ccd06bf80a..14dc174bee 100644 --- a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx +++ b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx @@ -12,7 +12,7 @@ import { Toaster } from "sonner"; import type { z } from "zod"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; -import { areTheySiblingEntitites } from "@calcom/lib/entityPermissionUtils"; +import { areTheySiblingEntities } from "@calcom/lib/entityPermissionUtils.shared"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { buildEmptyQueryValue, raqbQueryValueUtils } from "@calcom/lib/raqb/raqbUtils"; import { SchedulingType } from "@calcom/prisma/client"; @@ -161,7 +161,7 @@ const buildEventsData = ({ } >(); eventTypesByGroup?.eventTypeGroups.forEach((group) => { - const eventTypeValidInContext = areTheySiblingEntitites({ + const eventTypeValidInContext = areTheySiblingEntities({ entity1: { teamId: group.teamId ?? null, // group doesn't have userId. The query ensures that it belongs to the user only, if teamId isn't set. So, I am manually setting it to the form userId @@ -1164,7 +1164,7 @@ const Routes = ({ const availableRouters = allForms?.filtered .filter(({ form: router }) => { - const routerValidInContext = areTheySiblingEntitites({ + const routerValidInContext = areTheySiblingEntities({ entity1: { teamId: router.teamId ?? null, // group doesn't have userId. The query ensures that it belongs to the user only, if teamId isn't set. So, I am manually setting it to the form userId diff --git a/packages/app-store/routing-forms/trpc/deleteForm.handler.ts b/packages/app-store/routing-forms/trpc/deleteForm.handler.ts index 17e1ed5035..0d67fc2b60 100644 --- a/packages/app-store/routing-forms/trpc/deleteForm.handler.ts +++ b/packages/app-store/routing-forms/trpc/deleteForm.handler.ts @@ -1,4 +1,4 @@ -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/app-store/routing-forms/trpc/formMutation.handler.ts b/packages/app-store/routing-forms/trpc/formMutation.handler.ts index d2eb5328e1..c9ed0f397f 100644 --- a/packages/app-store/routing-forms/trpc/formMutation.handler.ts +++ b/packages/app-store/routing-forms/trpc/formMutation.handler.ts @@ -1,7 +1,7 @@ import type { App_RoutingForms_Form } from "@prisma/client"; import { Prisma } from "@prisma/client"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/app-store/routing-forms/trpc/formQuery.handler.ts b/packages/app-store/routing-forms/trpc/formQuery.handler.ts index 36e3750bf4..3cf2090d1e 100644 --- a/packages/app-store/routing-forms/trpc/formQuery.handler.ts +++ b/packages/app-store/routing-forms/trpc/formQuery.handler.ts @@ -1,4 +1,4 @@ -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/app-store/routing-forms/trpc/forms.handler.ts b/packages/app-store/routing-forms/trpc/forms.handler.ts index 38a81ecb84..d731550ad7 100644 --- a/packages/app-store/routing-forms/trpc/forms.handler.ts +++ b/packages/app-store/routing-forms/trpc/forms.handler.ts @@ -1,7 +1,7 @@ import type { z } from "zod"; import { hasFilter } from "@calcom/features/filters/lib/hasFilter"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import type { PrismaClient } from "@calcom/prisma"; diff --git a/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts b/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts index 3a13aaff0a..5d2bfeed98 100644 --- a/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts +++ b/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts @@ -1,6 +1,6 @@ import type { z } from "zod"; -import { canAccessEntity } from "@calcom/lib/entityPermissionUtils"; +import { canAccessEntity } from "@calcom/lib/entityPermissionUtils.server"; import { getTranslation } from "@calcom/lib/server/i18n"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/lib/entityPermissionUtils.ts b/packages/lib/entityPermissionUtils.server.ts similarity index 88% rename from packages/lib/entityPermissionUtils.ts rename to packages/lib/entityPermissionUtils.server.ts index f64ab7313d..8f842ac33a 100644 --- a/packages/lib/entityPermissionUtils.ts +++ b/packages/lib/entityPermissionUtils.server.ts @@ -140,21 +140,3 @@ export const entityPrismaWhereClause = ({ userId }: { userId: number }) => ({ }, ], }); - -/** - * It returns true if the two entities are created for the same team or same user. - */ -export const areTheySiblingEntitites = ({ - entity1, - entity2, -}: { - entity1: { teamId: number | null; userId: number | null }; - entity2: { teamId: number | null; userId: number | null }; -}) => { - if (entity1.teamId) { - return entity1.teamId === entity2.teamId; - } - // If entity doesn't belong to a team, then target shouldn't be a team. - // Also check for `userId` now. - return !entity2.teamId && entity1.userId === entity2.userId; -}; diff --git a/packages/lib/entityPermissionUtils.shared.ts b/packages/lib/entityPermissionUtils.shared.ts new file mode 100644 index 0000000000..5fffa9dc2a --- /dev/null +++ b/packages/lib/entityPermissionUtils.shared.ts @@ -0,0 +1,19 @@ +// Pure/shared entity permission utilities for use in both client and server environments + +/** + * It returns true if the two entities are created for the same team or same user. + */ +export const areTheySiblingEntities = ({ + entity1, + entity2, +}: { + entity1: { teamId: number | null; userId: number | null }; + entity2: { teamId: number | null; userId: number | null }; +}) => { + if (entity1.teamId) { + return entity1.teamId === entity2.teamId; + } + // If entity doesn't belong to a team, then target shouldn't be a team. + // Also check for `userId` now. + return !entity2.teamId && entity1.userId === entity2.userId; +}; diff --git a/packages/trpc/server/routers/loggedInViewer/teamsAndUserProfilesQuery.handler.ts b/packages/trpc/server/routers/loggedInViewer/teamsAndUserProfilesQuery.handler.ts index 70dbe7ed9d..9c73744911 100644 --- a/packages/trpc/server/routers/loggedInViewer/teamsAndUserProfilesQuery.handler.ts +++ b/packages/trpc/server/routers/loggedInViewer/teamsAndUserProfilesQuery.handler.ts @@ -1,5 +1,5 @@ import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { withRoleCanCreateEntity } from "@calcom/lib/entityPermissionUtils"; +import { withRoleCanCreateEntity } from "@calcom/lib/entityPermissionUtils.server"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import type { PrismaClient } from "@calcom/prisma"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts b/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts index 8dc1000a47..5fe7bb2ed1 100644 --- a/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts +++ b/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts @@ -10,7 +10,7 @@ import type { NextApiResponse } from "next"; import { enrichFormWithMigrationData } from "@calcom/app-store/routing-forms/enrichFormWithMigrationData"; import { getUrlSearchParamsToForwardForTestPreview } from "@calcom/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward"; import { enrichHostsWithDelegationCredentials } from "@calcom/lib/delegationCredential/server"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils"; +import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; import { fromEntriesWithDuplicateKeys } from "@calcom/lib/fromEntriesWithDuplicateKeys"; import { findTeamMembersMatchingAttributeLogic } from "@calcom/lib/raqb/findTeamMembersMatchingAttributeLogic"; import { getOrderedListOfLuckyUsers } from "@calcom/lib/server/getLuckyUser";