import asyncio import asyncpg import os from passlib.context import CryptContext DB_URL = os.getenv("DATABASE_URL", "postgresql://teeoff_admin:teeoff_secret_password@db:5432/teeoff") # Vi setter opp passord-sjekkeren AKKURAT slik main.py gjør det pwd_context = CryptContext(schemes=["pbkdf2_sha256"], deprecated="auto") async def test_sannheten(): print("\n" + "="*50) print(" 🔍 TEE OFF SANNHETSSERUM") print("="*50) username = "Envide Webutvikling" test_password = "Solveig Vilde Ingvild Gina" # Sørg for at dette er det du satte sist! try: conn = await asyncpg.connect(DB_URL) row = await conn.fetchrow("SELECT password_hash FROM admins WHERE username = $1", username) if not row: print("❌ FEIL: Fant ikke brukeren i det hele tatt!") return db_hash = row['password_hash'] print(f"1. Hash funnet i databasen: {db_hash[:30]}...") print(f"2. Tester mot passordet: '{test_password}'") # Den magiske testen is_valid = pwd_context.verify(test_password, db_hash) print("-" * 50) if is_valid: print("✅ SUKSESS! Passordet og hashen stemmer 100% overens.") print("➡️ KONKLUSJON: Hashingen fungerer perfekt. Problemet MÅ være at FastAPI (main.py) ikke klarer å lese JSON-dataene fra curl/frontend riktig.") else: print("❌ FEIL! Passordet stemmer IKKE med hashen i databasen.") print("➡️ KONKLUSJON: Scriptet som oppdaterer passordet gjør en feil (f.eks. legger til usynlige tegn), eller lagringen i databasen blir korrupt.") finally: await conn.close() if __name__ == "__main__": asyncio.run(test_sannheten())