diff --git a/Auth/authentication.py b/Auth/authentication.py index 98f16af..f1d8d97 100644 --- a/Auth/authentication.py +++ b/Auth/authentication.py @@ -5,6 +5,7 @@ Permet son accès au logiciel ou non """ import DB.dbLink as dbo +import Users.Model as U from getpass import getpass import hashlib import mysql.connector as mariadb @@ -24,7 +25,7 @@ class Auth(): def grantAccess(self): """Authentification de l'utilisateur """ #On définit les champs à récupérer en BDD comme vides - user_iD = None + user_id = None user_psswd = None #On va récupérer les infos en BDD @@ -33,14 +34,15 @@ class Auth(): result = link.query("SELECT Nom, MdP FROM utilisateur WHERE Identifiant = %s", [self.input_id, ]) for Nom, MdP in result: - user_iD = Nom + user_id = Nom user_psswd = MdP #Si l'user ID a été trouvé #On compare le mot de passe entré à celui récupéré en BDD, si ça matche, on renvoie True - if user_iD != None: + if user_id != None: if self.input_psswd.hexdigest() == user_psswd: Auth.access = True + Auth.current_user = U.User(user_id) print("Accès autorisé") else: print("Accès refusé : Le mot de passe est incorrect") diff --git a/DB/dbLink.py b/DB/dbLink.py index 82f9149..4986c0a 100644 --- a/DB/dbLink.py +++ b/DB/dbLink.py @@ -5,7 +5,7 @@ import mysql.connector as mariadb class DBLink: - """Classe permettant de faire une requete à la base de données""" + """Classe permettant de faire des requetes à la base de données""" _db_connection = None _db_cur = None @@ -16,13 +16,28 @@ class DBLink: self._db_connection = mariadb.connect(host = db_ids["host"], user = db_ids["user"], password = db_ids["password"], database = db_ids["database"]) self._db_cur = self._db_connection.cursor() - #Query standard def query(self, query, args): - self._db_cur.execute(query, args) + """query standard""" + try: + self._db_cur.execute(query, args) + except mariadb.Error as e: + self._db_cur = False + print("Erreur : ", e) return self._db_cur - #on ferme la connexion + def commit(self, query, args): + """ajout d'un élément en bdd standard""" + try: + self._db_cur.execute(query, args) + self._db_connection.commit() + message = "Element ajouté" + except mariadb.Error as e: + message = "Erreur" + print("Erreur : ", e) + return message + def __del__(self): + """fermeture de la connexion""" self._db_connection.close() def DBTest(): diff --git a/Menu/barreOutils.py b/Menu/barreOutils.py index e7f7a04..81102ca 100644 --- a/Menu/barreOutils.py +++ b/Menu/barreOutils.py @@ -3,10 +3,10 @@ from tkinter import * class BarreOutils(): - - """Notre fenêtre principale. - Tous les widgets sont stockés comme attributs de cette fenêtre.""" - + + """Notre fenêtre principale. + Tous les widgets sont stockés comme attributs de cette fenêtre.""" + def __init__(self): self.fenetre = Tk() self.message = Label(self.fenetre, text="Barre outils") @@ -14,26 +14,22 @@ class BarreOutils(): # Bouton qui ouvre le menu Mes projets : # dans lequel les utilisateurs pourront visualiser les taches et les temps en cours sur le/ les projets en cours - + self.bouton_mesProjets = Button(self.fenetre, text="Mes projets", fg="red") self.bouton_mesProjets.pack(side="right") - + liste_projets = Listbox(self.fenetre) liste_projets.pack() liste_projets.insert(END, "gestt") liste_projets.insert(END, "ratatouille") liste_projets.insert(END, "chouxfleur") - + # Bouton Deconnexion self.bouton_deconnexion = Button(self.fenetre, text="Deconnexion", command=self.fenetre.destroy) self.bouton_deconnexion.pack(side="left") - + b = BarreOutils() b.fenetre.mainloop() - - - - diff --git a/Users/Model.py b/Users/Model.py index e296afb..23072fd 100644 --- a/Users/Model.py +++ b/Users/Model.py @@ -6,20 +6,62 @@ class User: """Modèle utilisateur. Contient un objet utilisateur""" def __init__(self, id): + """Constructeur créant utilisateur à partir d'un ID""" self.identifiant = id #On va chercher l'user en base de données link = db.DBLink() - query = "SELECT u.IDUtil AS idBDD, u.Nom AS nom, u.Prénom AS prenom, u.Identifiant AS identifiant, u.MdP AS MdP, u.SalaireBrut AS cout, f.Intitulé AS fonction, p.Libelle AS pole FROM utilisateur AS u JOIN fonction AS f ON f.IDFonc = u.IDFonc JOIN pole AS p ON p.IDPole = p.IDPole WHERE u.identifiant = %s" + query = "SELECT u.IDUtil AS id_bdd, u.Nom AS nom, u.Prénom AS prenom, u.Identifiant AS identifiant, u.MdP AS mdp, u.SalaireBrut AS cout, u.IDFonc AS id_fonc, f.Intitulé AS fonction, p.Libelle AS pole \ + FROM utilisateur AS u \ + JOIN fonction AS f ON f.IDFonc = u.IDFonc \ + JOIN pole AS p ON p.IDPole = p.IDPole \ + WHERE u.identifiant = %s" result = link.query(query, [self.identifiant, ]) #On remplit l'objet à partir des éléments récupérés en BDD - for idBDD, nom, prenom, identifiant, MdP, cout, fonction, pole in result: - self._id_table = idBDD + for id_bdd, nom, prenom, identifiant, mdp, cout, id_fonc, fonction, pole in result: + self._id_table = id_bdd self.fonction = fonction self.pole = pole self.nom = nom self.prenom = prenom self.identifiant = identifiant - self._mdp = MdP - self.cout = cout + self._mdp = mdp + self.cout = cout + self.id_fonc = id_fonc + + + def hydrate(self, nom, prenom, identifiant, mdp, cout, idfonc, fonction, pole): + """Hydratation de l'objet""" + self.id_fonc = idfonc + self.fonction = fonction + self.pole = pole + self.nom = nom + self.prenom = prenom + self.identifiant = identifiant + self._mdp = mdp + self.cout = cout + + def register(self): + """Enregistrement de l'utilisateur""" + link = db.DBLink() + query = "INSERT INTO utilisateur \ + (IDFonc, Nom, Prénom, Identifiant, MdP, SalaireBrut) \ + VALUES (%s, %s, %s, %s, %s, %s)" + link.commit(query, [self.id_fonc, self.nom, self.prenom, self.identifiant, self._mdp, self.cout]) + + + def update(self): + """Mise à jour de l'utilisateur""" + link = db.DBLink() + query = "UPDATE utilisateur \ + SET Nom = %s, Prénom = %s, Identifiant = %s, MdP = %s, IDFonc = %s, SalaireBrut = %s \ + WHERE IDUtil = %s" + link.commit(query, [self.nom, self.prenom, self.identifiant, self._mdp, self.id_fonc, self.cout, self._id_table]) + + def delete(self): + """supprimer un utilisateur""" + + + def getRoles(self): + """liste des roles de l'utilisateur"""