2026-03-21 10:53:02 +01:00
|
|
|
import pymysql
|
|
|
|
|
import getpass
|
|
|
|
|
import bcrypt
|
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
import os
|
2026-03-24 23:06:07 +01:00
|
|
|
from log import log
|
2026-03-21 10:53:02 +01:00
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
|
|
|
|
def init():
|
|
|
|
|
try:
|
|
|
|
|
conn = pymysql.connect(
|
|
|
|
|
host=os.getenv("DB_HOST", "127.0.0.1"),
|
|
|
|
|
port=int(os.getenv("DB_PORT", 3306)),
|
|
|
|
|
user=os.getenv("DB_USER"),
|
|
|
|
|
password=os.getenv("DB_PASSWORD"),
|
|
|
|
|
database=os.getenv("DB_NAME"),
|
|
|
|
|
charset=os.getenv("DB_CHARSET", "utf8mb4")
|
|
|
|
|
)
|
|
|
|
|
return conn
|
|
|
|
|
except pymysql.err.OperationalError as e:
|
2026-03-24 23:06:07 +01:00
|
|
|
print(f"Erreur de connexion : {e}")
|
|
|
|
|
log.error(f"Erreur de connexion : {e}")
|
2026-03-21 10:53:02 +01:00
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
2026-03-24 23:06:07 +01:00
|
|
|
def login(username, password):
|
2026-03-21 10:53:02 +01:00
|
|
|
conn = init()
|
|
|
|
|
if conn is None:
|
|
|
|
|
return False
|
|
|
|
|
try:
|
|
|
|
|
cursor = conn.cursor()
|
|
|
|
|
requete = "SELECT password FROM Auth WHERE username = %s"
|
|
|
|
|
cursor.execute(requete, (username,))
|
|
|
|
|
resultat = cursor.fetchone()
|
|
|
|
|
if resultat and bcrypt.checkpw(password.encode('utf-8'), resultat[0].encode('utf-8')):
|
|
|
|
|
print("Connexion réussie")
|
2026-03-24 23:06:07 +01:00
|
|
|
log.info(f"Connexion réussie pour {username}")
|
2026-03-21 10:53:02 +01:00
|
|
|
return True
|
|
|
|
|
else:
|
2026-03-24 23:06:07 +01:00
|
|
|
print("Identifiants incorrects")
|
|
|
|
|
log.info("Identifiants incorrects,il est trop nul")
|
2026-03-21 10:53:02 +01:00
|
|
|
return False
|
|
|
|
|
except pymysql.err.OperationalError as e:
|
|
|
|
|
print(f"Erreur : {e}")
|
2026-03-24 23:06:07 +01:00
|
|
|
log.error(f"Erreur SQL : {e}")
|
2026-03-21 10:53:02 +01:00
|
|
|
return False
|
|
|
|
|
finally:
|
|
|
|
|
cursor.close()
|
|
|
|
|
conn.close()
|
|
|
|
|
|
|
|
|
|
|
2026-03-24 23:06:07 +01:00
|
|
|
def get_users():
|
|
|
|
|
conn = init()
|
|
|
|
|
if conn is None:
|
|
|
|
|
return []
|
|
|
|
|
try:
|
|
|
|
|
cursor = conn.cursor()
|
|
|
|
|
cursor.execute("SELECT username, Fonctions, created_at FROM Auth")
|
|
|
|
|
users = cursor.fetchall()
|
|
|
|
|
return [{"username": u[0], "role": u[1], "created_at": str(u[2])} for u in users]
|
|
|
|
|
except pymysql.err.OperationalError as e:
|
|
|
|
|
log.error(f"Erreur get_users : {e}")
|
|
|
|
|
return []
|
|
|
|
|
finally:
|
|
|
|
|
cursor.close()
|
|
|
|
|
conn.close()
|