pounce/backend/scripts/reset_admin_password.py
yves.gugger 6a6e2460d5 feat: Unified Market Feed API + Pounce Direct Integration
🚀 MARKET CONCEPT IMPLEMENTATION

Backend:
- Added /auctions/feed unified endpoint combining Pounce Direct + external auctions
- Implemented Pounce Score v2.0 with market signals (length, TLD, bids, age)
- Added vanity filter for premium domains (non-auth users)
- Integrated DomainListing model for Pounce Direct

Frontend:
- Refactored terminal/market page with Pounce Direct hierarchy
- Updated public auctions page with Pounce Exclusive section
- Added api.getMarketFeed() to API client
- Converted /market to redirect to /auctions

Documentation:
- Created MARKET_CONCEPT.md with full unicorn roadmap
- Created ZONE_FILE_ACCESS.md with Verisign access guide
- Updated todos and progress tracking

Cleanup:
- Deleted empty legacy folders (dashboard, portfolio, settings, watchlist, careers)
2025-12-11 08:59:50 +01:00

82 lines
3.3 KiB
Python

"""
Reset admin password for guggeryves@hotmail.com
"""
import asyncio
import sys
from sqlalchemy import select
from app.database import AsyncSessionLocal
from app.models.user import User
from app.models.subscription import Subscription, SubscriptionTier, SubscriptionStatus, TIER_CONFIG
from app.services.auth import AuthService
from datetime import datetime, timedelta
async def reset_admin_password():
async with AsyncSessionLocal() as db:
admin_email = "guggeryves@hotmail.com"
new_password = "Admin123!"
print(f"🔍 Looking for user: {admin_email}")
result = await db.execute(select(User).where(User.email == admin_email))
user = result.scalar_one_or_none()
if not user:
print(f"❌ User with email {admin_email} not found.")
return
print(f"✅ User found: ID={user.id}, Name={user.name}")
# Update password
user.hashed_password = AuthService.hash_password(new_password)
user.is_verified = True
user.is_admin = True
user.is_active = True
user.updated_at = datetime.utcnow()
await db.commit()
print(f"✅ Password updated to: {new_password}")
# Ensure user has Tycoon subscription
sub_result = await db.execute(
select(Subscription).where(Subscription.user_id == user.id)
)
subscription = sub_result.scalar_one_or_none()
tycoon_config = TIER_CONFIG.get(SubscriptionTier.TYCOON, {})
if not subscription:
subscription = Subscription(
user_id=user.id,
tier=SubscriptionTier.TYCOON,
status=SubscriptionStatus.ACTIVE,
max_domains=tycoon_config.get("domain_limit", 500),
started_at=datetime.utcnow(),
expires_at=datetime.utcnow() + timedelta(days=365 * 100),
)
db.add(subscription)
await db.commit()
print("✅ Created new Tycoon subscription.")
elif subscription.tier != SubscriptionTier.TYCOON or subscription.status != SubscriptionStatus.ACTIVE:
subscription.tier = SubscriptionTier.TYCOON
subscription.status = SubscriptionStatus.ACTIVE
subscription.max_domains = tycoon_config.get("domain_limit", 500)
subscription.updated_at = datetime.utcnow()
await db.commit()
print("✅ Updated subscription to Tycoon (Active).")
else:
print(f"✅ Subscription: {subscription.tier.value} ({subscription.status.value})")
await db.refresh(user)
print("\n==================================================")
print("📋 FINAL STATUS:")
print(f" Email: {user.email}")
print(f" Password: {new_password}")
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("==================================================")
print("\n✅ Admin user is ready! You can now login.")
if __name__ == "__main__":
asyncio.run(reset_admin_password())