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:
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user