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(); }