diff --git a/app.py b/app.py index 8cd7bd1..8797e1f 100644 --- a/app.py +++ b/app.py @@ -243,9 +243,33 @@ def hash_password(password): def check_password(stored_hash, password_input): + """Obsługuje zarówno hashe bcrypt (nowe), jak i stare Werkzeugowe (PBKDF2).""" pepper = app.config["BCRYPT_PEPPER"] peppered = (password_input + pepper).encode("utf-8") - return bcrypt.checkpw(peppered, stored_hash.encode("utf-8")) + + # Rozpoznaj format hasha + if stored_hash.startswith("$2b$") or stored_hash.startswith("$2a$"): + # bcrypt + try: + return bcrypt.checkpw(peppered, stored_hash.encode("utf-8")) + except Exception: + return False + elif stored_hash.startswith("pbkdf2:"): + # STARY HASH! (Werkzeug) + # opcjonalnie: zrób check_password_hash, pozwól się zalogować, wymuś zmianę hasła + from werkzeug.security import check_password_hash + if check_password_hash(stored_hash, password_input): + # tu np. możesz zapisać nowe hasło w formie bcrypt! + # user.password_hash = hash_password(password_input) + # db.session.commit() + print("Użytkownik loguje się starym hasłem: wymuś zmianę na nowe!") + return True # POZWÓL JEDNORAZOWO + else: + return False + else: + # Nieznany format + return False + if app.config["SQLALCHEMY_DATABASE_URI"].startswith("sqlite:///"):