""" Script para actualizar el password del usuario admin Ejecutar: python fix_admin_password.py """ import asyncio import sys from sqlalchemy import select, update from passlib.context import CryptContext # Importar desde el proyecto sys.path.insert(0, '/app') from app.core.database import AsyncSessionLocal from app.models.user import User # Configurar passlib igual que en security.py pwd_context = CryptContext( schemes=["argon2", "bcrypt"], deprecated="auto", argon2__memory_cost=65536, argon2__time_cost=3, argon2__parallelism=4, ) async def fix_admin_password(): """Actualizar password del admin a 'admin123'""" # Generar hash del password new_password = "admin123" password_hash = pwd_context.hash(new_password) print(f"Nuevo hash generado para password: {new_password}") print(f"Hash: {password_hash[:50]}...") async with AsyncSessionLocal() as session: try: # Buscar usuario admin result = await session.execute( select(User).where(User.email == "admin@aduanasoft.com") ) user = result.scalar_one_or_none() if not user: print("❌ Usuario admin no encontrado") return print(f"✅ Usuario encontrado: {user.email} (ID: {user.id})") # Actualizar password user.password_hash = password_hash await session.commit() print("✅ Password actualizado exitosamente") print(f" Email: admin@aduanasoft.com") print(f" Password: admin123") except Exception as e: await session.rollback() print(f"❌ Error: {e}") raise if __name__ == "__main__": print("=" * 60) print("ACTUALIZAR PASSWORD DEL ADMIN") print("=" * 60) asyncio.run(fix_admin_password()) print("=" * 60)