If the user subscription was created over 7 days ago, then their trial is expired

This commit is contained in:
sabaimran
2023-11-24 22:08:32 -08:00
parent e5b1350523
commit 771f9bcfa1
2 changed files with 13 additions and 3 deletions

View File

@@ -77,7 +77,10 @@ class UserAuthenticationBackend(AuthenticationBackend):
if user: if user:
if state.billing_enabled: if state.billing_enabled:
subscription_state = await aget_user_subscription_state(user) subscription_state = await aget_user_subscription_state(user)
subscribed = subscription_state == SubscriptionState.SUBSCRIBED.value subscribed = (
subscription_state == SubscriptionState.SUBSCRIBED.value
or subscription_state == SubscriptionState.TRIAL.value
)
if subscribed: if subscribed:
return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser( return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser(
user_with_token.user user_with_token.user
@@ -97,7 +100,10 @@ class UserAuthenticationBackend(AuthenticationBackend):
if user_with_token: if user_with_token:
if state.billing_enabled: if state.billing_enabled:
subscription_state = await aget_user_subscription_state(user_with_token.user) subscription_state = await aget_user_subscription_state(user_with_token.user)
subscribed = subscription_state == SubscriptionState.SUBSCRIBED.value subscribed = (
subscription_state == SubscriptionState.SUBSCRIBED.value
or subscription_state == SubscriptionState.TRIAL.value
)
if subscribed: if subscribed:
return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser( return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser(
user_with_token.user user_with_token.user

View File

@@ -1,7 +1,7 @@
import math import math
import random import random
import secrets import secrets
from datetime import date, datetime, timezone from datetime import date, datetime, timezone, timedelta
from typing import List, Optional, Type from typing import List, Optional, Type
from enum import Enum from enum import Enum
@@ -140,6 +140,10 @@ def subscription_to_state(subscription: Subscription) -> str:
if not subscription: if not subscription:
return SubscriptionState.INVALID.value return SubscriptionState.INVALID.value
elif subscription.type == Subscription.Type.TRIAL: elif subscription.type == Subscription.Type.TRIAL:
# Trial subscription is valid for 7 days
if datetime.now(tz=timezone.utc) - subscription.created_at > timedelta(days=7):
return SubscriptionState.EXPIRED.value
return SubscriptionState.TRIAL.value return SubscriptionState.TRIAL.value
elif subscription.is_recurring and subscription.renewal_date >= datetime.now(tz=timezone.utc): elif subscription.is_recurring and subscription.renewal_date >= datetime.now(tz=timezone.utc):
return SubscriptionState.SUBSCRIBED.value return SubscriptionState.SUBSCRIBED.value