fix: Prevent duplicate subscription creation on admin register

- Check if subscription already exists before creating Tycoon subscription for admin users
- Fixes UNIQUE constraint failed: subscriptions.user_id error
This commit is contained in:
2025-12-11 20:13:46 +01:00
parent 08fadb547a
commit 526428565b

View File

@ -106,17 +106,24 @@ async def register(
user.is_verified = True # Auto-verify admins
await db.commit()
# Give admin Tycoon subscription
# Give admin Tycoon subscription (only if no subscription exists)
from app.models.subscription import Subscription, SubscriptionTier, SubscriptionStatus, TIER_CONFIG
tycoon_config = TIER_CONFIG.get(SubscriptionTier.TYCOON, {})
subscription = Subscription(
user_id=user.id,
tier=SubscriptionTier.TYCOON,
status=SubscriptionStatus.ACTIVE,
max_domains=tycoon_config.get("domain_limit", 500),
from sqlalchemy import select
# Check if subscription already exists
existing_sub = await db.execute(
select(Subscription).where(Subscription.user_id == user.id)
)
db.add(subscription)
await db.commit()
if not existing_sub.scalar_one_or_none():
tycoon_config = TIER_CONFIG.get(SubscriptionTier.TYCOON, {})
subscription = Subscription(
user_id=user.id,
tier=SubscriptionTier.TYCOON,
status=SubscriptionStatus.ACTIVE,
max_domains=tycoon_config.get("domain_limit", 500),
)
db.add(subscription)
await db.commit()
# Generate verification token
verification_token = secrets.token_urlsafe(32)