Amélioration constructeur user + gestion des roles
This commit is contained in:
parent
e87c0cba3d
commit
c4f816d7a2
|
@ -27,20 +27,20 @@ class Auth():
|
||||||
user_psswd = None
|
user_psswd = None
|
||||||
|
|
||||||
#On va récupérer les infos en BDD
|
#On va récupérer les infos en BDD
|
||||||
quer = "SELECT Nom FROM utilisateur"
|
|
||||||
link = dbo.DBLink()
|
link = dbo.DBLink()
|
||||||
result = link.query("SELECT Nom, MdP FROM utilisateur WHERE Identifiant = %s", [self.input_id, ])
|
result = link.query("SELECT IDUtil, Nom, MdP FROM utilisateur WHERE Identifiant = %s", [self.input_id, ])
|
||||||
|
|
||||||
for Nom, MdP in result:
|
for id_user, nom, mdp in result:
|
||||||
user_id = Nom
|
user_id = id_user
|
||||||
user_psswd = MdP
|
user_id = nom
|
||||||
|
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 = user_id
|
Auth.current_user_id = id_user
|
||||||
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")
|
||||||
|
|
104
Users/Model.py
104
Users/Model.py
|
@ -5,23 +5,40 @@ import DB.dbLink as db
|
||||||
class User:
|
class User:
|
||||||
"""Modèle utilisateur. Contient un objet utilisateur"""
|
"""Modèle utilisateur. Contient un objet utilisateur"""
|
||||||
|
|
||||||
def __init__(self, id):
|
def __init__(self, id='', nom='', prenom='', identifiant='', mdp='', cout='', idfonc='', fonction='', pole='', roles=dict()):
|
||||||
"""Constructeur créant utilisateur à partir d'un ID"""
|
"""Constructeur initialisant utilisateur à partir d'un ID ou des données indiquées"""
|
||||||
self.identifiant = id
|
|
||||||
self.roles = list();
|
|
||||||
|
|
||||||
#On va chercher l'user en base de données
|
#On load l'user depuis la BDD si demandé avec un ID
|
||||||
link = db.DBLink()
|
if id != '':
|
||||||
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 \
|
self._id_table = id
|
||||||
FROM utilisateur AS u \
|
#On va chercher l'user en base de données
|
||||||
JOIN fonction AS f ON f.IDFonc = u.IDFonc \
|
link = db.DBLink()
|
||||||
JOIN pole AS p ON p.IDPole = p.IDPole \
|
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 \
|
||||||
WHERE u.identifiant = %s"
|
FROM utilisateur AS u \
|
||||||
result = link.query(query, [self.identifiant, ])
|
JOIN fonction AS f ON f.IDFonc = u.IDFonc \
|
||||||
|
JOIN pole AS p ON p.IDPole = p.IDPole \
|
||||||
|
WHERE u.IDUtil = %s"
|
||||||
|
result = link.query(query, [self._id_table, ])
|
||||||
|
|
||||||
#On remplit l'objet à partir des éléments récupérés en BDD
|
#On hydrate l'objet à partir des éléments récupérés en BDD
|
||||||
for id_bdd, nom, prenom, identifiant, mdp, cout, id_fonc, fonction, pole in result:
|
for id_bdd, nom, prenom, identifiant, mdp, cout, id_fonc, fonction, pole in result:
|
||||||
self._id_table = id_bdd
|
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.id_fonc = id_fonc
|
||||||
|
|
||||||
|
#Récupération de la liste des roles
|
||||||
|
self.roles = dict()
|
||||||
|
self.get_roles()
|
||||||
|
|
||||||
|
#Sinon, on hydrate à partir des champs renseignés en paramètre
|
||||||
|
else :
|
||||||
|
self.id_fonc = idfonc
|
||||||
self.fonction = fonction
|
self.fonction = fonction
|
||||||
self.pole = pole
|
self.pole = pole
|
||||||
self.nom = nom
|
self.nom = nom
|
||||||
|
@ -29,31 +46,26 @@ class User:
|
||||||
self.identifiant = identifiant
|
self.identifiant = identifiant
|
||||||
self._mdp = mdp
|
self._mdp = mdp
|
||||||
self.cout = cout
|
self.cout = cout
|
||||||
self.id_fonc = id_fonc
|
self.roles = roles
|
||||||
|
|
||||||
#Récupération de la liste des roles
|
|
||||||
self.getRoles()
|
|
||||||
|
|
||||||
|
|
||||||
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):
|
def register(self):
|
||||||
"""Enregistrement de l'utilisateur"""
|
"""Enregistrement de l'utilisateur"""
|
||||||
link = db.DBLink()
|
link = db.DBLink()
|
||||||
|
#Enregistrement des données utilisateur
|
||||||
query = "INSERT INTO utilisateur \
|
query = "INSERT INTO utilisateur \
|
||||||
(IDFonc, Nom, Prénom, Identifiant, MdP, SalaireBrut) \
|
(IDFonc, Nom, Prénom, Identifiant, MdP, SalaireBrut) \
|
||||||
VALUES (%s, %s, %s, %s, %s, %s)"
|
VALUES (%s, %s, %s, %s, %s, %s)"
|
||||||
link.commit(query, [self.id_fonc, self.nom, self.prenom, self.identifiant, self._mdp, self.cout])
|
link.commit(query, [self.id_fonc, self.nom, self.prenom, self.identifiant, self._mdp, self.cout])
|
||||||
|
#Chargement de l'id ainsi créé
|
||||||
|
query = "SELECT IDUtil \
|
||||||
|
FROM utilisateur \
|
||||||
|
WHERE identifiant = %s"
|
||||||
|
result = link.query(query, [self.identifiant, ])
|
||||||
|
|
||||||
|
for IDUtil, in result:
|
||||||
|
self._id_table = IDUtil
|
||||||
|
#Enregistrement des roles
|
||||||
|
self.update_roles()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Mise à jour de l'utilisateur"""
|
"""Mise à jour de l'utilisateur"""
|
||||||
|
@ -66,18 +78,19 @@ class User:
|
||||||
def delete(self):
|
def delete(self):
|
||||||
"""supprimer l'utilisateur courant"""
|
"""supprimer l'utilisateur courant"""
|
||||||
link = db.DBLink()
|
link = db.DBLink()
|
||||||
query = "DELETE \
|
|
||||||
FROM utilisateur \
|
|
||||||
WHERE IDUtil = %s"
|
|
||||||
link.commit(query, [self._id_table, ])
|
|
||||||
|
|
||||||
query = "DELETE \
|
query = "DELETE \
|
||||||
FROM roleattribution \
|
FROM roleattribution \
|
||||||
WHERE IDUtil = %s"
|
WHERE IDUtil = %s"
|
||||||
link.commit(query, [self._id_table, ])
|
link.commit(query, [self._id_table, ])
|
||||||
|
|
||||||
|
query = "DELETE \
|
||||||
|
FROM utilisateur \
|
||||||
|
WHERE IDUtil = %s"
|
||||||
|
link.commit(query, [self._id_table, ])
|
||||||
|
|
||||||
def getRoles(self):
|
|
||||||
|
def get_roles(self):
|
||||||
"""liste des roles de l'utilisateur"""
|
"""liste des roles de l'utilisateur"""
|
||||||
link = db.DBLink()
|
link = db.DBLink()
|
||||||
query = "SELECT a.IDRole AS id_role, r.Libellé AS role \
|
query = "SELECT a.IDRole AS id_role, r.Libellé AS role \
|
||||||
|
@ -87,4 +100,21 @@ class User:
|
||||||
result = link.query(query, [self._id_table, ])
|
result = link.query(query, [self._id_table, ])
|
||||||
|
|
||||||
for id_role, role in result:
|
for id_role, role in result:
|
||||||
self.roles.append((id_role, role))
|
self.roles[role] = id_role
|
||||||
|
|
||||||
|
def update_roles(self):
|
||||||
|
"""enregistrement/mise à jour des roles de l'uitlisateur"""
|
||||||
|
link = db.DBLink()
|
||||||
|
|
||||||
|
#On commence par supprimer les roles actuels s'ils existent
|
||||||
|
query = "DELETE \
|
||||||
|
FROM roleattribution \
|
||||||
|
WHERE IDUtil = %s"
|
||||||
|
link.commit(query, [self._id_table, ])
|
||||||
|
|
||||||
|
#Puis on enregistre les nouveaux
|
||||||
|
for rol_id in self.roles.values():
|
||||||
|
query = "INSERT INTO roleattribution \
|
||||||
|
(IDUtil, IDRole) \
|
||||||
|
VALUES(%s, %s)"
|
||||||
|
link.commit(query, [self._id_table, rol_id])
|
||||||
|
|
2
main.py
2
main.py
|
@ -12,7 +12,7 @@ login.fenetre.mainloop()
|
||||||
#On lance le programme
|
#On lance le programme
|
||||||
while auth.Auth.access == True:
|
while auth.Auth.access == True:
|
||||||
print("programme en cours")
|
print("programme en cours")
|
||||||
user = U.User(auth.Auth.current_user)
|
user = U.User(auth.Auth.current_user_id)
|
||||||
print("Bonjour", user.nom, user.prenom, "vous êtes dans la boucle")
|
print("Bonjour", user.nom, user.prenom, "vous êtes dans la boucle")
|
||||||
|
|
||||||
os.system("pause")
|
os.system("pause")
|
||||||
|
|
Loading…
Reference in a new issue