From 8129434a2e0c6f6dcfd972275e9327f11c7793d9 Mon Sep 17 00:00:00 2001 From: forehalo Date: Wed, 12 Feb 2025 12:19:28 +0000 Subject: [PATCH] fix(server): allow to checkout selfhost team in canary (#10130) --- .../backend/server/src/plugins/payment/manager/selfhost.ts | 7 +++++++ packages/backend/server/src/plugins/payment/resolver.ts | 1 + packages/backend/server/src/plugins/payment/service.ts | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/backend/server/src/plugins/payment/manager/selfhost.ts b/packages/backend/server/src/plugins/payment/manager/selfhost.ts index 0af3c10907..917ce86219 100644 --- a/packages/backend/server/src/plugins/payment/manager/selfhost.ts +++ b/packages/backend/server/src/plugins/payment/manager/selfhost.ts @@ -29,6 +29,13 @@ import { export const SelfhostTeamCheckoutArgs = z.object({ quantity: z.number(), + user: z + .object({ + id: z.string(), + email: z.string(), + }) + .optional() + .nullable(), }); export const SelfhostTeamSubscriptionIdentity = z.object({ diff --git a/packages/backend/server/src/plugins/payment/resolver.ts b/packages/backend/server/src/plugins/payment/resolver.ts index 2d6d151405..59f78e70e0 100644 --- a/packages/backend/server/src/plugins/payment/resolver.ts +++ b/packages/backend/server/src/plugins/payment/resolver.ts @@ -279,6 +279,7 @@ export class SubscriptionResolver { session = await this.service.checkout(input, { plan: input.plan as any, quantity: input.args?.quantity ?? 10, + user, }); } else { if (!user) { diff --git a/packages/backend/server/src/plugins/payment/service.ts b/packages/backend/server/src/plugins/payment/service.ts index eb08825a9c..0405088d32 100644 --- a/packages/backend/server/src/plugins/payment/service.ts +++ b/packages/backend/server/src/plugins/payment/service.ts @@ -134,7 +134,8 @@ export class SubscriptionService implements OnApplicationBootstrap { if ( this.config.deploy && this.config.affine.canary && - (!('user' in args) || !this.feature.isStaff(args.user.email)) + args.user && + !this.feature.isStaff(args.user.email) ) { throw new ActionForbidden(); }