diff --git a/backend/scripts/verify_admin.py b/backend/scripts/verify_admin.py new file mode 100644 index 0000000..f41751d --- /dev/null +++ b/backend/scripts/verify_admin.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +""" +Script to ensure admin user is properly configured. +Run this after database initialization. +""" +import asyncio +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from sqlalchemy import select, update +from app.database import AsyncSessionLocal +from app.models.user import User +from app.models.subscription import Subscription, SubscriptionTier, SubscriptionStatus, TIER_CONFIG + + +ADMIN_EMAIL = "guggeryves@hotmail.com" + + +async def verify_admin(): + """Ensure admin user exists and is properly configured.""" + print(f"š Looking for user: {ADMIN_EMAIL}") + + async with AsyncSessionLocal() as db: + # Find user + result = await db.execute( + select(User).where(User.email == ADMIN_EMAIL) + ) + user = result.scalar_one_or_none() + + if not user: + print(f"ā User not found: {ADMIN_EMAIL}") + print(" Please register first, then run this script again.") + return False + + print(f"ā User found: ID={user.id}, Name={user.name}") + + # Update user flags + changes = [] + + if not user.is_admin: + user.is_admin = True + changes.append("is_admin = True") + + if not user.is_verified: + user.is_verified = True + changes.append("is_verified = True") + + if not user.is_active: + user.is_active = True + changes.append("is_active = True") + + if changes: + await db.commit() + print(f"ā Updated user: {', '.join(changes)}") + else: + print("ā User already has correct flags") + + # Check subscription + sub_result = await db.execute( + select(Subscription).where(Subscription.user_id == user.id) + ) + subscription = sub_result.scalar_one_or_none() + + if not subscription: + # Create Tycoon subscription + 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() + print("ā Created Tycoon subscription") + elif subscription.tier != SubscriptionTier.TYCOON: + subscription.tier = SubscriptionTier.TYCOON + subscription.status = SubscriptionStatus.ACTIVE + subscription.max_domains = TIER_CONFIG.get(SubscriptionTier.TYCOON, {}).get("domain_limit", 500) + await db.commit() + print("ā Upgraded to Tycoon subscription") + else: + print(f"ā Subscription: {subscription.tier.value} (Active)") + + # Final status + print("\n" + "="*50) + print("š FINAL STATUS:") + print(f" Email: {user.email}") + print(f" Name: {user.name}") + print(f" Admin: {'ā Yes' if user.is_admin else 'ā No'}") + print(f" Verified: {'ā Yes' if user.is_verified else 'ā No'}") + print(f" Active: {'ā Yes' if user.is_active else 'ā No'}") + print(f" Tier: Tycoon") + print("="*50) + print("\nā Admin user is ready! You can now login.") + + return True + + +if __name__ == "__main__": + asyncio.run(verify_admin()) + diff --git a/frontend/src/app/admin/page.tsx b/frontend/src/app/admin/page.tsx index 8db239d..e3be9cd 100644 --- a/frontend/src/app/admin/page.tsx +++ b/frontend/src/app/admin/page.tsx @@ -432,7 +432,7 @@ export default function AdminPage() { { id: 'newsletter' as const, label: 'Newsletter', icon: Mail }, { id: 'tld' as const, label: 'TLD Data', icon: Globe }, { id: 'auctions' as const, label: 'Auctions', icon: Gavel }, - { id: 'blog' as const, label: 'Blog', icon: BookOpen }, + { id: 'blog' as const, label: 'Briefings', icon: BookOpen }, { id: 'system' as const, label: 'System', icon: Database }, { id: 'activity' as const, label: 'Activity', icon: History }, ] @@ -451,12 +451,12 @@ export default function AdminPage() {
- Manage users, monitor system health, and control platform settings. + Users. Data. System. All under your command.