cal.pub0.org/packages/features/ee/organizations/pages/organization.tsx

46 lines
1.2 KiB
TypeScript

import type { GetServerSidePropsContext } from "next";
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { getFeatureFlagMap } from "@calcom/features/flags/server/utils";
import { MembershipRole } from "@calcom/prisma/client";
export const getServerSideProps = async ({ req, res }: GetServerSidePropsContext) => {
const prisma = await import("@calcom/prisma").then((mod) => mod.default);
const flags = await getFeatureFlagMap(prisma);
// Check if organizations are enabled
if (flags["organizations"] !== true) {
return {
notFound: true,
};
}
// Check if logged in user has an organization assigned
const session = await getServerSession({ req, res });
if (!session?.user.organizationId) {
return {
notFound: true,
};
}
// Check if logged in user has OWNER/ADMIN role in organization
const membership = await prisma.membership.findFirst({
where: {
userId: session?.user.id,
teamId: session?.user.organizationId,
},
select: {
role: true,
},
});
if (!membership?.role || membership?.role === MembershipRole.MEMBER) {
return {
notFound: true,
};
}
// Otherwise, all good
return {
props: {},
};
};