diff --git a/packages/features/ee/platform/components/CreateANewPlatformForm.tsx b/packages/features/ee/platform/components/CreateANewPlatformForm.tsx index 9567878eaa..d79a20c661 100644 --- a/packages/features/ee/platform/components/CreateANewPlatformForm.tsx +++ b/packages/features/ee/platform/components/CreateANewPlatformForm.tsx @@ -65,11 +65,13 @@ const CreateANewPlatformFormChild = ({ session }: { session: Ensure { if (err.message === "organization_url_taken") { newOrganizationFormMethods.setError("slug", { type: "custom", message: t("url_taken") }); + setServerErrorMessage(err.message); } else if (err.message === "domain_taken_team" || err.message === "domain_taken_project") { newOrganizationFormMethods.setError("slug", { type: "custom", message: t("problem_registering_domain"), }); + setServerErrorMessage(err.message); } else { setServerErrorMessage(err.message); } diff --git a/packages/trpc/server/routers/viewer/organizations/create.handler.ts b/packages/trpc/server/routers/viewer/organizations/create.handler.ts index a8ac94d78c..ad632d16d9 100644 --- a/packages/trpc/server/routers/viewer/organizations/create.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/create.handler.ts @@ -104,6 +104,8 @@ export const createHandler = async ({ input, ctx }: CreateOptions) => { team: { select: { slug: true, + isOrganization: true, + isPlatform: true, }, }, }, @@ -160,6 +162,14 @@ export const createHandler = async ({ input, ctx }: CreateOptions) => { if (hasAnOrgWithSameSlug || RESERVED_SUBDOMAINS.includes(slug)) throw new TRPCError({ code: "BAD_REQUEST", message: "organization_url_taken" }); + const hasExistingPlatformOrOrgTeam = loggedInUser?.teams.find((team) => { + return team.team.isPlatform || team.team.isOrganization; + }); + + if (!!hasExistingPlatformOrOrgTeam?.team && isPlatform) { + throw new TRPCError({ code: "BAD_REQUEST", message: "User is already part of a team" }); + } + const availability = getAvailabilityFromSchedule(DEFAULT_SCHEDULE); const isOrganizationConfigured = isPlatform ? true : await createDomain(slug);