- Added password management utilities for user administration - Added PowerShell scripts for testing attachment endpoints - Enhanced development and testing workflow capabilities - Completed v1.4.0 with all maintenance tools included"
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
"""
|
|
Script para verificar y actualizar password del test_user
|
|
"""
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
from sqlalchemy import select
|
|
from passlib.context import CryptContext
|
|
|
|
# Configurar el path
|
|
backend_path = os.path.join(os.path.dirname(__file__), 'backend')
|
|
sys.path.insert(0, backend_path)
|
|
|
|
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 check_and_fix_test_user():
|
|
"""Verificar y actualizar password del test_user"""
|
|
|
|
# Contraseñas posibles
|
|
possible_passwords = [
|
|
"admin123",
|
|
"TestPassword123!",
|
|
"password123",
|
|
"test123",
|
|
"hashed_password"
|
|
]
|
|
|
|
async with AsyncSessionLocal() as session:
|
|
try:
|
|
# Buscar test_user
|
|
result = await session.execute(
|
|
select(User).where(User.email == "test_user@example.com")
|
|
)
|
|
user = result.scalar_one_or_none()
|
|
|
|
if not user:
|
|
print("❌ Usuario test_user@example.com no encontrado")
|
|
return
|
|
|
|
print(f"✅ Usuario encontrado: {user.email}")
|
|
print(f"Hash actual: {user.password_hash}")
|
|
|
|
# Probar contraseñas posibles
|
|
found_password = None
|
|
for password in possible_passwords:
|
|
if pwd_context.verify(password, user.password_hash):
|
|
found_password = password
|
|
break
|
|
|
|
if found_password:
|
|
print(f"🎉 Contraseña encontrada: {found_password}")
|
|
else:
|
|
print("❌ Ninguna contraseña coincide")
|
|
print("Estableciendo nueva contraseña: admin123")
|
|
|
|
# Establecer nueva contraseña
|
|
new_password = "admin123"
|
|
user.password_hash = pwd_context.hash(new_password)
|
|
await session.commit()
|
|
print(f"✅ Contraseña actualizada a: {new_password}")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error: {e}")
|
|
await session.rollback()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(check_and_fix_test_user()) |