diff --git a/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/actions.tsx b/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/actions.tsx index 579c67f9095..68e02bcac64 100644 --- a/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/actions.tsx +++ b/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/actions.tsx @@ -9,17 +9,37 @@ import { deleteSubscriberChurns, } from "../../../../../../db/tables/subscriber_churns"; import { SubscriberChurnRow } from "knex/types/tables"; +import { getServerSession } from "../../../../../functions/server/getServerSession"; +import { isAdmin } from "../../../../../api/utils/auth"; + +/** + * Helper function to perform session + admin check. + * Returns true if the current session belongs to an admin user. + */ +async function isAuthorized(): Promise<boolean> { + const session = await getServerSession(); + return Boolean(session?.user?.email && isAdmin(session.user.email)); +} export async function getAllChurns() { + if (!(await isAuthorized())) { + return null; + } return getAllSubscriberChurns(); } export async function upsertAllChurns( churningSubscribers: SubscriberChurnRow[], ) { + if (!(await isAuthorized())) { + return null; + } return upsertSubscriberChurns(churningSubscribers); } export async function clearAllChurns() { + if (!(await isAuthorized())) { + return null; + } return deleteSubscriberChurns(); } diff --git a/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/page.tsx b/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/page.tsx index 62e508d1202..b989eead384 100644 --- a/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/page.tsx +++ b/src/app/(proper_react)/(redesign)/(authenticated)/admin/churn-subscribers/page.tsx @@ -18,7 +18,7 @@ export default async function DevPage() { return ( <ChurnAdmin - churningSubscribers={await getAllChurns()} + churningSubscribers={(await getAllChurns()) ?? []} churnsToEmail={await getChurnsToEmail()} /> );