45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import os, sys, bcrypt, mysql.connector
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
conn = mysql.connector.connect(
|
|
host=os.getenv("DB_HOST"),
|
|
database=os.getenv("DB_NAME"),
|
|
user=os.getenv("DB_USER"),
|
|
password=os.getenv("DB_PASSWORD"),
|
|
)
|
|
try:
|
|
cur = conn.cursor(dictionary=True)
|
|
cur.execute("""
|
|
SELECT NomUtilisateur, MotDePasse
|
|
FROM Utilisateurs
|
|
WHERE MotDePasseHash IS NULL OR MotDePasseHash = ''
|
|
""")
|
|
rows = cur.fetchall()
|
|
print(f"{len(rows)} utilisateur(s) à migrer…")
|
|
|
|
for r in rows:
|
|
login = r["NomUtilisateur"]
|
|
plain = (r["MotDePasse"] or "").encode("utf-8")
|
|
if not plain:
|
|
print(f"- {login}: mot de passe vide — ignoré")
|
|
continue
|
|
hashed = bcrypt.hashpw(plain, bcrypt.gensalt(rounds=12)).decode("ascii")
|
|
cur.execute("""
|
|
UPDATE Utilisateurs
|
|
SET MotDePasseHash = %s
|
|
WHERE NomUtilisateur = %s
|
|
""", (hashed, login))
|
|
print(f"- {login}: OK")
|
|
conn.commit()
|
|
print("Migration terminée.")
|
|
except Exception as e:
|
|
conn.rollback()
|
|
print("Erreur:", e)
|
|
sys.exit(1)
|
|
finally:
|
|
cur.close()
|
|
conn.close()
|
|
|