Tech Stack Advisor - Code Viewer

← Back to File Tree

quick_create_admin_local.py

Language: python | Path: scripts/quick_create_admin_local.py | Lines: 85
#!/usr/bin/env python3
"""Quick script to create a test admin user using in-memory Qdrant."""
import sys
from pathlib import Path

# Add backend to path
backend_path = Path(__file__).parent.parent / "backend"
sys.path.insert(0, str(backend_path))

from src.core.user_memory import get_user_memory_store
from src.core.logging import setup_logging, get_logger

setup_logging()
logger = get_logger(__name__)

# Default admin credentials
DEFAULT_EMAIL = "admin@techstackadvisor.com"
DEFAULT_PASSWORD = "admin123456"
DEFAULT_NAME = "Admin User"


def create_test_admin():
    """Create a test admin user with default credentials using in-memory Qdrant."""
    print("\n" + "="*60)
    print("  Creating Test Admin User (In-Memory Mode)")
    print("="*60)

    try:
        # Use in-memory Qdrant (no server required)
        memory_store = get_user_memory_store(use_local=True)

        # Check if user already exists
        existing = memory_store.get_user_by_email(DEFAULT_EMAIL)
        if existing:
            print(f"\nāœ… Admin user already exists!")
            print(f"   Email: {existing['email']}")
            print(f"   Is Admin: {existing.get('is_admin', False)}")

            # Make sure they're admin
            if not existing.get('is_admin'):
                print(f"\nšŸ”§ Upgrading user to admin...")
                memory_store.update_user(existing["user_id"], {"is_admin": True})
                print(f"āœ… User is now an admin!")
        else:
            # Create new admin user
            user = memory_store.create_user(
                email=DEFAULT_EMAIL,
                password=DEFAULT_PASSWORD,
                full_name=DEFAULT_NAME,
                is_admin=True,
            )

            print(f"\nāœ… Test admin user created!")
            print(f"   Email: {user['email']}")
            print(f"   User ID: {user['user_id']}")

        print(f"\nšŸ“‹ Admin Credentials:")
        print(f"   Email: {DEFAULT_EMAIL}")
        print(f"   Password: {DEFAULT_PASSWORD}")

        print(f"\nšŸ” Login command:")
        print(f"   curl -X POST http://localhost:8000/auth/login \\")
        print(f"     -H 'Content-Type: application/json' \\")
        print(f"     -d '{{\"email\":\"{DEFAULT_EMAIL}\",\"password\":\"{DEFAULT_PASSWORD}\"}}'")

        print(f"\nšŸ“Š Test admin dashboard:")
        print(f"   1. Login to get token")
        print(f"   2. curl http://localhost:8000/admin/stats \\")
        print(f"        -H 'Authorization: Bearer YOUR_TOKEN'")

        print(f"\nāš ļø  NOTE: Using in-memory Qdrant - data will be lost on restart!")
        print(f"   To persist data, start Qdrant server on localhost:6333")

        print("\n" + "="*60 + "\n")

    except Exception as e:
        print(f"\nāŒ Error: {e}")
        logger.error("admin_creation_error", error=str(e))
        import traceback
        traceback.print_exc()
        sys.exit(1)


if __name__ == "__main__":
    create_test_admin()