""" Script para crear/actualizar usuario de prueba con contraseña conocida """ import asyncio from sqlalchemy import select, update from app.core.database import AsyncSessionLocal from app.core.security import security from app.models.user import User, UserRole from app.models.tenant import Tenant import uuid async def create_test_user(): async with AsyncSessionLocal() as db: # Buscar tenant tenant_query = select(Tenant).where(Tenant.slug.like('%aduanasoft%')).limit(1) result = await db.execute(tenant_query) tenant = result.scalar_one_or_none() if not tenant: print("❌ No se encontró tenant") return print(f"✅ Tenant encontrado: {tenant.name} ({tenant.slug})") # Buscar o crear usuario admin user_query = select(User).where( User.email == "admin@aduanasoft.com", User.tenant_id == tenant.id ) result = await db.execute(user_query) user = result.scalar_one_or_none() # Hash de la contraseña "admin123" password_hash = security.hash_password("admin123") if user: # Actualizar contraseña user.password_hash = password_hash user.is_active = True user.email_verified = True await db.commit() print(f"✅ Usuario actualizado: {user.email}") else: # Crear usuario nuevo user = User( id=uuid.uuid4(), tenant_id=tenant.id, email="admin@aduanasoft.com", first_name="Admin", last_name="Sistema", password_hash=password_hash, role=UserRole.ADMIN, is_active=True, email_verified=True ) db.add(user) await db.commit() print(f"✅ Usuario creado: {user.email}") print(f"\n📋 Credenciales de prueba:") print(f" Email: admin@aduanasoft.com") print(f" Password: admin123") print(f" Tenant: {tenant.slug}") print(f" Role: ADMIN") if __name__ == "__main__": asyncio.run(create_test_user())