82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
import tkinter as tk
|
|
from tkinter import messagebox
|
|
import mysql.connector
|
|
import os
|
|
import subprocess
|
|
from dotenv import load_dotenv
|
|
|
|
# Charger les variables d'environnement
|
|
load_dotenv()
|
|
|
|
DB_HOST = os.getenv("DB_HOST")
|
|
DB_USER = os.getenv("DB_USER")
|
|
DB_PASSWORD = os.getenv("DB_PASSWORD")
|
|
DB_NAME = os.getenv("DB_NAME")
|
|
|
|
|
|
def ouvrir_excel(site, login):
|
|
dossier_excel = os.path.join(os.path.dirname(__file__), "excel")
|
|
chemin_excel = os.path.join(dossier_excel, "Ratio.xlsm")
|
|
subprocess.Popen(["start", chemin_excel], shell=True)
|
|
|
|
# Écrit le nom du site
|
|
with open(os.path.join(dossier_excel, "site_selectionne.txt"), "w") as f:
|
|
f.write(site)
|
|
|
|
# Écrit le nom de l'utilisateur connecté
|
|
with open(os.path.join(dossier_excel, "login_utilisateur.txt"), "w") as f:
|
|
f.write(login)
|
|
os.chdir(dossier_excel) # On se place dans le dossier pour lancer Excel
|
|
subprocess.Popen(["start", "Ratio.xlsm"], shell=True)
|
|
|
|
from datetime import date
|
|
|
|
def verifier_connexion():
|
|
login = entry_login.get()
|
|
mdp = entry_mdp.get()
|
|
|
|
try:
|
|
conn = mysql.connector.connect(
|
|
host=DB_HOST,
|
|
user=DB_USER,
|
|
password=DB_PASSWORD,
|
|
database=DB_NAME
|
|
)
|
|
cursor = conn.cursor()
|
|
|
|
cursor.execute("SELECT Site, DateExpiration FROM AccesUtilisateurs WHERE NomUtilisateur=%s AND MotDePasse=%s", (login, mdp))
|
|
result = cursor.fetchone()
|
|
|
|
if result:
|
|
site, expiration = result
|
|
if expiration and expiration < date.today():
|
|
messagebox.showerror("Compte expiré", f"Votre compte a expiré le {expiration}.")
|
|
else:
|
|
root.destroy()
|
|
ouvrir_excel(site, login)
|
|
else:
|
|
messagebox.showerror("Erreur", "Identifiants invalides.")
|
|
|
|
except Exception as e:
|
|
messagebox.showerror("Erreur de connexion", str(e))
|
|
|
|
|
|
|
|
# Interface utilisateur
|
|
root = tk.Tk()
|
|
root.title("Connexion à l'inventaire")
|
|
|
|
tk.Label(root, text="Nom d'utilisateur").grid(row=0, column=0)
|
|
tk.Label(root, text="Mot de passe").grid(row=1, column=0)
|
|
|
|
entry_login = tk.Entry(root)
|
|
entry_mdp = tk.Entry(root, show="*")
|
|
|
|
entry_login.grid(row=0, column=1)
|
|
entry_mdp.grid(row=1, column=1)
|
|
|
|
tk.Button(root, text="Connexion", command=verifier_connexion).grid(row=2, columnspan=2, pady=10)
|
|
|
|
root.mainloop()
|
|
|