Ajout des fonctions d'enregistrement et d'update d'utilisateur
This commit is contained in:
parent
83ca6366b1
commit
a3038bb268
|
@ -5,6 +5,7 @@ Permet son accès au logiciel ou non
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import DB.dbLink as dbo
|
import DB.dbLink as dbo
|
||||||
|
import Users.Model as U
|
||||||
from getpass import getpass
|
from getpass import getpass
|
||||||
import hashlib
|
import hashlib
|
||||||
import mysql.connector as mariadb
|
import mysql.connector as mariadb
|
||||||
|
@ -24,7 +25,7 @@ class Auth():
|
||||||
def grantAccess(self):
|
def grantAccess(self):
|
||||||
"""Authentification de l'utilisateur """
|
"""Authentification de l'utilisateur """
|
||||||
#On définit les champs à récupérer en BDD comme vides
|
#On définit les champs à récupérer en BDD comme vides
|
||||||
user_iD = None
|
user_id = None
|
||||||
user_psswd = None
|
user_psswd = None
|
||||||
|
|
||||||
#On va récupérer les infos en BDD
|
#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, ])
|
result = link.query("SELECT Nom, MdP FROM utilisateur WHERE Identifiant = %s", [self.input_id, ])
|
||||||
|
|
||||||
for Nom, MdP in result:
|
for Nom, MdP in result:
|
||||||
user_iD = Nom
|
user_id = Nom
|
||||||
user_psswd = MdP
|
user_psswd = MdP
|
||||||
|
|
||||||
#Si l'user ID a été trouvé
|
#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
|
#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:
|
if self.input_psswd.hexdigest() == user_psswd:
|
||||||
Auth.access = True
|
Auth.access = True
|
||||||
|
Auth.current_user = U.User(user_id)
|
||||||
print("Accès autorisé")
|
print("Accès autorisé")
|
||||||
else:
|
else:
|
||||||
print("Accès refusé : Le mot de passe est incorrect")
|
print("Accès refusé : Le mot de passe est incorrect")
|
||||||
|
|
23
DB/dbLink.py
23
DB/dbLink.py
|
@ -5,7 +5,7 @@ import mysql.connector as mariadb
|
||||||
|
|
||||||
|
|
||||||
class DBLink:
|
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_connection = None
|
||||||
_db_cur = 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_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()
|
self._db_cur = self._db_connection.cursor()
|
||||||
|
|
||||||
#Query standard
|
|
||||||
def query(self, query, args):
|
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
|
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):
|
def __del__(self):
|
||||||
|
"""fermeture de la connexion"""
|
||||||
self._db_connection.close()
|
self._db_connection.close()
|
||||||
|
|
||||||
def DBTest():
|
def DBTest():
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
|
||||||
class BarreOutils():
|
class BarreOutils():
|
||||||
|
|
||||||
"""Notre fenêtre principale.
|
"""Notre fenêtre principale.
|
||||||
Tous les widgets sont stockés comme attributs de cette fenêtre."""
|
Tous les widgets sont stockés comme attributs de cette fenêtre."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.fenetre = Tk()
|
self.fenetre = Tk()
|
||||||
self.message = Label(self.fenetre, text="Barre outils")
|
self.message = Label(self.fenetre, text="Barre outils")
|
||||||
|
@ -14,26 +14,22 @@ class BarreOutils():
|
||||||
|
|
||||||
# Bouton qui ouvre le menu Mes projets :
|
# 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
|
# 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 = Button(self.fenetre, text="Mes projets", fg="red")
|
||||||
self.bouton_mesProjets.pack(side="right")
|
self.bouton_mesProjets.pack(side="right")
|
||||||
|
|
||||||
|
|
||||||
liste_projets = Listbox(self.fenetre)
|
liste_projets = Listbox(self.fenetre)
|
||||||
liste_projets.pack()
|
liste_projets.pack()
|
||||||
|
|
||||||
liste_projets.insert(END, "gestt")
|
liste_projets.insert(END, "gestt")
|
||||||
liste_projets.insert(END, "ratatouille")
|
liste_projets.insert(END, "ratatouille")
|
||||||
liste_projets.insert(END, "chouxfleur")
|
liste_projets.insert(END, "chouxfleur")
|
||||||
|
|
||||||
# Bouton Deconnexion
|
# Bouton Deconnexion
|
||||||
self.bouton_deconnexion = Button(self.fenetre, text="Deconnexion", command=self.fenetre.destroy)
|
self.bouton_deconnexion = Button(self.fenetre, text="Deconnexion", command=self.fenetre.destroy)
|
||||||
self.bouton_deconnexion.pack(side="left")
|
self.bouton_deconnexion.pack(side="left")
|
||||||
|
|
||||||
|
|
||||||
b = BarreOutils()
|
b = BarreOutils()
|
||||||
b.fenetre.mainloop()
|
b.fenetre.mainloop()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,20 +6,62 @@ class User:
|
||||||
"""Modèle utilisateur. Contient un objet utilisateur"""
|
"""Modèle utilisateur. Contient un objet utilisateur"""
|
||||||
|
|
||||||
def __init__(self, id):
|
def __init__(self, id):
|
||||||
|
"""Constructeur créant utilisateur à partir d'un ID"""
|
||||||
self.identifiant = id
|
self.identifiant = id
|
||||||
|
|
||||||
#On va chercher l'user en base de données
|
#On va chercher l'user en base de données
|
||||||
link = db.DBLink()
|
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, ])
|
result = link.query(query, [self.identifiant, ])
|
||||||
|
|
||||||
#On remplit l'objet à partir des éléments récupérés en BDD
|
#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:
|
for id_bdd, nom, prenom, identifiant, mdp, cout, id_fonc, fonction, pole in result:
|
||||||
self._id_table = idBDD
|
self._id_table = id_bdd
|
||||||
self.fonction = fonction
|
self.fonction = fonction
|
||||||
self.pole = pole
|
self.pole = pole
|
||||||
self.nom = nom
|
self.nom = nom
|
||||||
self.prenom = prenom
|
self.prenom = prenom
|
||||||
self.identifiant = identifiant
|
self.identifiant = identifiant
|
||||||
self._mdp = MdP
|
self._mdp = mdp
|
||||||
self.cout = cout
|
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"""
|
||||||
|
|
Loading…
Reference in a new issue