main.py fichier principal Besoin d'aide def ValideUser concernant la logique du try pour se connecter
######################
from PyQt5 import QtCore, QtGui, QtWidgets
from projet import Ui_MainWindow
import sys
import st
class Bd(QtWidgets.QMainWindow):
def __init__(self):
super(Bd, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.Bd = st.Bd()
self.ui.page.setCurrentIndex(0)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
# Menu de Navigation
self.ui.MenuPrincipalBtn.clicked.connect(lambda: self.ui.page.setCurrentIndex(0))
self.ui.CreerCompteMenuBtn.clicked.connect(lambda: self.ui.page.setCurrentIndex(2))
self.ui.SeconnecterMenuBtn.clicked.connect(lambda: self.ui.page.setCurrentIndex(1))
self.ui.QuitterBtn.clicked.connect(lambda: self.close())
# Fin de Navigation
self.ui.CreerCompteBtn.clicked.connect(self.CreateUserAccount)
self.ui.SeconncterBtn.clicked.connect(self.ValideUser)
def CreateUserAccount(self):
Nom = self.ui.lineEditNomCreerCompte.text()
Email = self.ui.lineEditMailCreerCompte.text()
Password = self.ui.lineEditPasswordCreerCompte.text()
Data = (Nom,Email,Password)
if self.Bd.ConnectUser(Data,) == 0:
self.ui.CreerComptelabel.setText("Votre compte a été bien créé")
self.ui.CreerComptelabel.setStyleSheet("color:green; font:13px")
self.ui.lineEditNomCreerCompte.setText('')
self.ui.lineEditMailCreerCompte.setText('')
self.ui.lineEditPasswordCreerCompte.setText('')
def ValideUser(self):
Email = self.ui.lineEditMailSeConnecter.text()
Password = self.ui.lineEditPasswordSeConnecter.text()
try:
self.Bd.ValideUser(Email,Password) # Pass Email and Password separately
self.ui.labelSeConnecter.setText("Votre compte est bien connecté!")
finally:
self.ui.labelSeConnecter.setText("Les informations saisies ne sont pas correctes !")
if __name__ == "__main__":
App = QtWidgets.QApplication([])
Win = Bd()
Win.show()
sys.exit(App.exec())
st.py fichier base de donnée Besoin d'aide au niveau de def ValideUser et def ValideUser
#######################
import sqlite3,smtplib,ssl
from email.message import EmailMessage
class Bd():
def __init__(self):
self.Connexion = sqlite3.connect("ctl.db")
self.Cursor = self.Connexion.cursor()
def ConnectUser(self,Data):
Req = "INSERT INTO user(Nom,Email,Password) VALUES(?,?,?)"
self.Cursor.execute(Req,Data)
self.Connexion.commit()
return 0
def ValideUser(self,Email,Password):
Req = "SELECT Email FROM user WHERE Email = ?"
self.Cursor.execute(Req,(Email,Password))
return print(self.Cursor.fetchall()[0][0])
# Roooh
Posté par cg . Évalué à 6.
Ça stocke le mot de passe en clair dans la base, dis-donc ?
[^] # Re: Roooh
Posté par gUI (Mastodon) . Évalué à 3.
Boudu ! C'est pas bien !
Pour ça on peut passer par Werkzeug qui fait très bien le hashing + salage.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Roooh
Posté par François GUÉRIN (Mastodon) . Évalué à 2. Dernière modification le 13 juillet 2023 à 09:25.
Werkzeug est un serveur WSGI, utilisé pour le débogage de Flask par exemple - on ajouterai dans ce cas une grosse lib dans les dépendances pour n'utiliser qu'une toute petite fonction…
La seule librairie hashlib serait beaucoup plus adaptée - d'ailleurs c'est ce qui est utilisé par Werkzeug pour faire hashing / salage…
Cette lib a l'énorme avantage de faire partie de python !
Courage !
[^] # Re: Roooh
Posté par gUI (Mastodon) . Évalué à 3. Dernière modification le 13 juillet 2023 à 09:36.
Oui mais quand tu n'as que hashlib, c'est à toi de gérer le salage, et tu peux ne pas bien le faire. Passer par une lib de plus haut niveau te garantie une bonne implémentation complète.
J'ai cité Werkzeug parce que en effet je m'en sers dans le cadre d'une appli Flask, mais il y en a d'autres, sûrement plus légères en effet, notamment argon2-cffi.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Roooh
Posté par gUI (Mastodon) . Évalué à 3.
Du coup je viens de re-regarder cette lib, c'est vraiment la Rolls !!! À utiliser sans modération, je vais switcher dessus au prochain besoin.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Roooh
Posté par François GUÉRIN (Mastodon) . Évalué à 1.
Super ! Merci !
[^] # Re: Roooh
Posté par Strash . Évalué à 3.
Ce n'est pas vraiment utilisé pour le débogage ; Flask s'appuie sur Werkzeug + une lib de template pour devenir le framework qu'il est. En gros Flask est une surcouche.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.