From 75fb0a9f1a3befe779eb290bce8890102516cd72 Mon Sep 17 00:00:00 2001 From: liuyi Date: Tue, 16 Jan 2024 03:27:44 +0000 Subject: [PATCH] fix(server): standalone early access users detection (#5601) --- .../server/src/modules/features/management.ts | 30 +++++++++++-------- .../server/src/modules/payment/service.ts | 2 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/backend/server/src/modules/features/management.ts b/packages/backend/server/src/modules/features/management.ts index 75f11ba1e3..dfccaa8919 100644 --- a/packages/backend/server/src/modules/features/management.ts +++ b/packages/backend/server/src/modules/features/management.ts @@ -47,22 +47,26 @@ export class FeatureManagementService { return this.feature.listFeatureUsers(FeatureType.EarlyAccess); } + async isEarlyAccessUser(email: string) { + const user = await this.prisma.user.findFirst({ + where: { + email, + }, + }); + if (user) { + const canEarlyAccess = await this.feature + .hasUserFeature(user.id, FeatureType.EarlyAccess) + .catch(() => false); + + return canEarlyAccess; + } + return false; + } + /// check early access by email async canEarlyAccess(email: string) { if (this.config.featureFlags.earlyAccessPreview && !this.isStaff(email)) { - const user = await this.prisma.user.findFirst({ - where: { - email, - }, - }); - if (user) { - const canEarlyAccess = await this.feature - .hasUserFeature(user.id, FeatureType.EarlyAccess) - .catch(() => false); - - return canEarlyAccess; - } - return false; + return this.isEarlyAccessUser(email); } else { return true; } diff --git a/packages/backend/server/src/modules/payment/service.ts b/packages/backend/server/src/modules/payment/service.ts index 137c3585bd..8c40c360df 100644 --- a/packages/backend/server/src/modules/payment/service.ts +++ b/packages/backend/server/src/modules/payment/service.ts @@ -679,7 +679,7 @@ export class SubscriptionService { user: User, couponType: CouponType ): Promise { - const earlyAccess = await this.features.canEarlyAccess(user.email); + const earlyAccess = await this.features.isEarlyAccessUser(user.email); if (earlyAccess) { try { const coupon = await this.stripe.coupons.retrieve(couponType);