from passlib.hash import bcrypt # Hash from database (from migration) stored_hash = "$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5ufUfVwq7z.lW" # Test password test_password = "admin123" # Verify result = bcrypt.verify(test_password, stored_hash) print(f"Password 'admin123' matches stored hash: {result}") # Also check what's actually in the database import asyncio import asyncpg async def check_db(): conn = await asyncpg.connect( host='localhost', port=5432, user='postgres', password='ay8hNQ!', database='geutebruck_api' ) row = await conn.fetchrow("SELECT username, password_hash FROM users WHERE username = 'admin'") if row: print(f"\nDatabase user: {row['username']}") print(f"Database hash: {row['password_hash']}") # Verify against database hash db_result = bcrypt.verify(test_password, row['password_hash']) print(f"Password 'admin123' matches database hash: {db_result}") else: print("\nNo admin user found in database!") await conn.close() asyncio.run(check_db())