mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 21:19:12 +00:00
If the user subscription was created over 7 days ago, then their trial is expired
This commit is contained in:
@@ -77,7 +77,10 @@ class UserAuthenticationBackend(AuthenticationBackend):
|
||||
if user:
|
||||
if state.billing_enabled:
|
||||
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:
|
||||
return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser(
|
||||
user_with_token.user
|
||||
@@ -97,7 +100,10 @@ class UserAuthenticationBackend(AuthenticationBackend):
|
||||
if user_with_token:
|
||||
if state.billing_enabled:
|
||||
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:
|
||||
return AuthCredentials(["authenticated", "subscribed"]), AuthenticatedKhojUser(
|
||||
user_with_token.user
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import math
|
||||
import random
|
||||
import secrets
|
||||
from datetime import date, datetime, timezone
|
||||
from datetime import date, datetime, timezone, timedelta
|
||||
from typing import List, Optional, Type
|
||||
from enum import Enum
|
||||
|
||||
@@ -140,6 +140,10 @@ def subscription_to_state(subscription: Subscription) -> str:
|
||||
if not subscription:
|
||||
return SubscriptionState.INVALID.value
|
||||
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
|
||||
elif subscription.is_recurring and subscription.renewal_date >= datetime.now(tz=timezone.utc):
|
||||
return SubscriptionState.SUBSCRIBED.value
|
||||
|
||||
Reference in New Issue
Block a user