diff --git a/backend/igny8_core/api/authentication.py b/backend/igny8_core/api/authentication.py index f20ec8a5..e3930a88 100644 --- a/backend/igny8_core/api/authentication.py +++ b/backend/igny8_core/api/authentication.py @@ -55,7 +55,9 @@ class JWTAuthentication(BaseAuthentication): return None try: - user = User.objects.get(id=user_id) + # Refresh user from DB with account and plan relationships to get latest data + # This ensures changes to account/plan are reflected immediately without re-login + user = User.objects.select_related('account', 'account__plan').get(id=user_id) except User.DoesNotExist: # User not found - return None to allow other auth classes to try return None @@ -66,7 +68,12 @@ class JWTAuthentication(BaseAuthentication): if account_id: try: account = Account.objects.get(id=account_id) + # If user's account changed, use the new one from user object (most up-to-date) + # This ensures we always use the user's current account, not a stale token account_id + if user.account and user.account.id != account_id: + account = user.account except Account.DoesNotExist: + # Account from token doesn't exist - use user's account instead pass if not account: