Skip to content

Commit 4858f97

Browse files
authored
Add permission checks for referral server actions (#3396)
1 parent ecf8237 commit 4858f97

File tree

5 files changed

+25
-1
lines changed

5 files changed

+25
-1
lines changed

apps/web/lib/actions/referrals/mark-referral-closed-lost.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { prisma } from "@dub/prisma";
99
import { ReferralStatus } from "@dub/prisma/client";
1010
import { waitUntil } from "@vercel/functions";
1111
import { authActionClient } from "../safe-action";
12+
import { throwIfNoPermission } from "../throw-if-no-permission";
1213

1314
// Mark a partner referral as closed lost
1415
export const markReferralClosedLostAction = authActionClient
@@ -17,6 +18,11 @@ export const markReferralClosedLostAction = authActionClient
1718
const { workspace } = ctx;
1819
const { referralId, notes } = parsedInput;
1920

21+
throwIfNoPermission({
22+
role: workspace.role,
23+
requiredRoles: ["owner", "member"],
24+
});
25+
2026
const programId = getDefaultProgramIdOrThrow(workspace);
2127

2228
const partnerReferral = await getReferralOrThrow({

apps/web/lib/actions/referrals/mark-referral-closed-won.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { prisma } from "@dub/prisma";
1010
import { ReferralStatus } from "@dub/prisma/client";
1111
import { waitUntil } from "@vercel/functions";
1212
import { authActionClient } from "../safe-action";
13+
import { throwIfNoPermission } from "../throw-if-no-permission";
1314

1415
// Mark a partner referral as closed won
1516
export const markReferralClosedWonAction = authActionClient
@@ -18,6 +19,11 @@ export const markReferralClosedWonAction = authActionClient
1819
const { workspace } = ctx;
1920
const { referralId, saleAmount, stripeCustomerId, notes } = parsedInput;
2021

22+
throwIfNoPermission({
23+
role: workspace.role,
24+
requiredRoles: ["owner", "member"],
25+
});
26+
2127
const programId = getDefaultProgramIdOrThrow(workspace);
2228

2329
const referral = await getReferralOrThrow({

apps/web/lib/actions/referrals/mark-referral-qualified.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { ReferralStatus } from "@dub/prisma/client";
1313
import { pick } from "@dub/utils";
1414
import { waitUntil } from "@vercel/functions";
1515
import { authActionClient } from "../safe-action";
16+
import { throwIfNoPermission } from "../throw-if-no-permission";
1617

1718
// Mark a partner referral as qualified
1819
export const markReferralQualifiedAction = authActionClient
@@ -21,6 +22,11 @@ export const markReferralQualifiedAction = authActionClient
2122
const { workspace } = ctx;
2223
const { referralId, externalId, notes } = parsedInput;
2324

25+
throwIfNoPermission({
26+
role: workspace.role,
27+
requiredRoles: ["owner", "member"],
28+
});
29+
2430
const programId = getDefaultProgramIdOrThrow(workspace);
2531

2632
const referral = await getReferralOrThrow({

apps/web/lib/actions/referrals/mark-referral-unqualified.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { prisma } from "@dub/prisma";
99
import { ReferralStatus } from "@dub/prisma/client";
1010
import { waitUntil } from "@vercel/functions";
1111
import { authActionClient } from "../safe-action";
12+
import { throwIfNoPermission } from "../throw-if-no-permission";
1213

1314
// Mark a partner referral as unqualified
1415
export const markReferralUnqualifiedAction = authActionClient
@@ -17,6 +18,11 @@ export const markReferralUnqualifiedAction = authActionClient
1718
const { workspace } = ctx;
1819
const { referralId, notes } = parsedInput;
1920

21+
throwIfNoPermission({
22+
role: workspace.role,
23+
requiredRoles: ["owner", "member"],
24+
});
25+
2026
const programId = getDefaultProgramIdOrThrow(workspace);
2127

2228
const partnerReferral = await getReferralOrThrow({

apps/web/lib/actions/referrals/submit-referral.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
import { createId } from "@/lib/api/create-id";
44
import { DubApiError } from "@/lib/api/errors";
55
import { getProgramEnrollmentOrThrow } from "@/lib/api/programs/get-program-enrollment-or-throw";
6+
import { notifyPartnerReferralSubmitted } from "@/lib/api/referrals/notify-partner-referral-submitted";
67
import { REFERRAL_FORM_REQUIRED_FIELD_KEYS } from "@/lib/referrals/constants";
78
import {
89
formFieldSchema,
910
referralFormSchema,
1011
referralRequiredFieldsSchema,
1112
} from "@/lib/zod/schemas/referral-form";
1213
import { createPartnerReferralSchema } from "@/lib/zod/schemas/referrals";
13-
import { notifyPartnerReferralSubmitted } from "@/lib/api/referrals/notify-partner-referral-submitted";
1414
import { prisma } from "@dub/prisma";
1515
import { Prisma } from "@dub/prisma/client";
1616
import { COUNTRIES } from "@dub/utils";

0 commit comments

Comments
 (0)