Allow free access for configuration using billing

This commit is contained in:
Charles Bochet
2024-08-04 01:37:53 +02:00
parent 76185c2f68
commit e2b42ee6c9
3 changed files with 16 additions and 5 deletions

View File

@ -6,7 +6,6 @@ import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import { OnboardingStatus, SubscriptionStatus } from '~/generated/graphql'; import { OnboardingStatus, SubscriptionStatus } from '~/generated/graphql';
import { useDefaultHomePagePath } from '~/hooks/useDefaultHomePagePath'; import { useDefaultHomePagePath } from '~/hooks/useDefaultHomePagePath';
import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation'; import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation';
import { isDefined } from '~/utils/isDefined';
export const usePageChangeEffectNavigateLocation = () => { export const usePageChangeEffectNavigateLocation = () => {
const isMatchingLocation = useIsMatchingLocation(); const isMatchingLocation = useIsMatchingLocation();
@ -100,9 +99,7 @@ export const usePageChangeEffectNavigateLocation = () => {
if ( if (
onboardingStatus === OnboardingStatus.Completed && onboardingStatus === OnboardingStatus.Completed &&
isMatchingOnboardingRoute && isMatchingOnboardingRoute
subscriptionStatus !== SubscriptionStatus.Canceled &&
(isDefined(subscriptionStatus) || !isMatchingLocation(AppPath.PlanRequired))
) { ) {
return defaultHomePagePath; return defaultHomePagePath;
} }

View File

@ -1,12 +1,13 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { BillingModule } from 'src/engine/core-modules/billing/billing.module'; import { BillingModule } from 'src/engine/core-modules/billing/billing.module';
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
import { OnboardingResolver } from 'src/engine/core-modules/onboarding/onboarding.resolver'; import { OnboardingResolver } from 'src/engine/core-modules/onboarding/onboarding.resolver';
import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service'; import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service';
import { UserVarsModule } from 'src/engine/core-modules/user/user-vars/user-vars.module'; import { UserVarsModule } from 'src/engine/core-modules/user/user-vars/user-vars.module';
@Module({ @Module({
imports: [BillingModule, UserVarsModule], imports: [BillingModule, UserVarsModule, FeatureFlagModule],
exports: [OnboardingService], exports: [OnboardingService],
providers: [OnboardingService, OnboardingResolver], providers: [OnboardingService, OnboardingResolver],
}) })

View File

@ -2,6 +2,8 @@ import { Injectable } from '@nestjs/common';
import { SubscriptionStatus } from 'src/engine/core-modules/billing/entities/billing-subscription.entity'; import { SubscriptionStatus } from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service'; import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { IsFeatureEnabledService } from 'src/engine/core-modules/feature-flag/services/is-feature-enabled.service';
import { OnboardingStatus } from 'src/engine/core-modules/onboarding/enums/onboarding-status.enum'; import { OnboardingStatus } from 'src/engine/core-modules/onboarding/enums/onboarding-status.enum';
import { UserVarsService } from 'src/engine/core-modules/user/user-vars/services/user-vars.service'; import { UserVarsService } from 'src/engine/core-modules/user/user-vars/services/user-vars.service';
import { User } from 'src/engine/core-modules/user/user.entity'; import { User } from 'src/engine/core-modules/user/user.entity';
@ -26,6 +28,7 @@ export class OnboardingService {
constructor( constructor(
private readonly billingSubscriptionService: BillingSubscriptionService, private readonly billingSubscriptionService: BillingSubscriptionService,
private readonly environmentService: EnvironmentService, private readonly environmentService: EnvironmentService,
private readonly isFeatureEnabledService: IsFeatureEnabledService,
private readonly userVarsService: UserVarsService<OnboardingKeyValueTypeMap>, private readonly userVarsService: UserVarsService<OnboardingKeyValueTypeMap>,
) {} ) {}
@ -36,6 +39,16 @@ export class OnboardingService {
return false; return false;
} }
const isFreeAccessEnabled =
await this.isFeatureEnabledService.isFeatureEnabled(
FeatureFlagKey.IsFreeAccessEnabled,
user.defaultWorkspaceId,
);
if (isFreeAccessEnabled) {
return false;
}
const currentBillingSubscription = const currentBillingSubscription =
await this.billingSubscriptionService.getCurrentBillingSubscription({ await this.billingSubscriptionService.getCurrentBillingSubscription({
workspaceId: user.defaultWorkspaceId, workspaceId: user.defaultWorkspaceId,