mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-09 13:25:11 +00:00
Fix subscription state detection for users based on phone numbers, emails (#633)
* Fix subscription state detection for users based on phone numbers, emails * Fix unit tests for api_user4 * Use a single method for determining subscription from user * Pass user object, rather than user.email for getting subscription state
This commit is contained in:
@@ -160,7 +160,7 @@ class UserAuthenticationBackend(AuthenticationBackend):
|
|||||||
if subscribed:
|
if subscribed:
|
||||||
return (
|
return (
|
||||||
AuthCredentials(["authenticated", "premium"]),
|
AuthCredentials(["authenticated", "premium"]),
|
||||||
AuthenticatedKhojUser(user),
|
AuthenticatedKhojUser(user, client_application),
|
||||||
)
|
)
|
||||||
return AuthCredentials(["authenticated"]), AuthenticatedKhojUser(user, client_application)
|
return AuthCredentials(["authenticated"]), AuthenticatedKhojUser(user, client_application)
|
||||||
if state.anonymous_mode:
|
if state.anonymous_mode:
|
||||||
|
|||||||
@@ -207,6 +207,8 @@ def subscription_to_state(subscription: Subscription) -> str:
|
|||||||
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
|
||||||
|
elif not subscription.is_recurring and subscription.renewal_date is None:
|
||||||
|
return SubscriptionState.EXPIRED.value
|
||||||
elif not subscription.is_recurring and subscription.renewal_date >= datetime.now(tz=timezone.utc):
|
elif not subscription.is_recurring and subscription.renewal_date >= datetime.now(tz=timezone.utc):
|
||||||
return SubscriptionState.UNSUBSCRIBED.value
|
return SubscriptionState.UNSUBSCRIBED.value
|
||||||
elif not subscription.is_recurring and subscription.renewal_date < datetime.now(tz=timezone.utc):
|
elif not subscription.is_recurring and subscription.renewal_date < datetime.now(tz=timezone.utc):
|
||||||
@@ -222,11 +224,11 @@ def get_user_subscription_state(email: str) -> str:
|
|||||||
return subscription_to_state(user_subscription)
|
return subscription_to_state(user_subscription)
|
||||||
|
|
||||||
|
|
||||||
async def aget_user_subscription_state(email: str) -> str:
|
async def aget_user_subscription_state(user: KhojUser) -> str:
|
||||||
"""Get subscription state of user
|
"""Get subscription state of user
|
||||||
Valid state transitions: trial -> subscribed <-> unsubscribed OR expired
|
Valid state transitions: trial -> subscribed <-> unsubscribed OR expired
|
||||||
"""
|
"""
|
||||||
user_subscription = await Subscription.objects.filter(user__email=email).afirst()
|
user_subscription = await Subscription.objects.filter(user=user).afirst()
|
||||||
return subscription_to_state(user_subscription)
|
return subscription_to_state(user_subscription)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user