############################################################################ # # # Description: Fenêtre principale avec les éléments pour se connecter # # # ############################################################################ # Import des éléments de PyQt5 from PyQt5.QtWidgets import ( QPushButton, QHBoxLayout, QGroupBox, QLabel, QLineEdit, QWidget, QVBoxLayout, QGridLayout, QMessageBox ) # Import des éléments locals from src.app import mainHome, mainRegister from src.database.dbuser import DbUser from src.database.dbsearch import DbSearch def core_login(mainWindow: object, email: str, password: str) -> None: """ Fait appel aux methodes de DbUser et DbSearch pour vérifier si les informations de connections fournies sont correctes et auquel cas modifie les variables de la classe principale de l'app afin de valider la connection de l'utilisateur. """ # Instanciation des classes permettant d'accéder à la BDD dbuser: object = DbUser(mainWindow) dbsearch: object = DbSearch(mainWindow) # Si l'email exist if dbuser.check_exist_email(email): # On vérifi l'assiocation email - pass userId = dbuser.check_user_credential(email, password) # Si ça match, on a l'userId associé if userId: # On récupère les infos de l'utilisateur userAccount = dbsearch.get_user_account_by_userid(userId)[0] # On associe ces valeur au variable de la classe principale # pour connecter l'utilisateur mainWindow.userConnected = True mainWindow.userId = userId mainWindow.userEmail = userAccount[1] mainWindow.userInscrDate = userAccount[2] if userAccount[3] == 0: mainWindow.userStatus = "Admin" elif userAccount[3] == 1: mainWindow.userStatus = "Pro" elif userAccount[3] == 2: mainWindow.userStatus = "Client" # Un Qmessage pour prévenir que c'est OK QMessageBox.information( mainWindow, "Connexion", "Vous êtes connecté" ) # On redirige à l'accueil mainHome.window_main(mainWindow, True) else: QMessageBox.warning( mainWindow, "Connexion", "Mauvais mot de passe" ) else: QMessageBox.warning( mainWindow, "Connexion", "Mauvais email" ) def window_main(mainWindow: object) -> None: """ Page principale de l'app d'où l'on peut se connecter """ #Création du widget info sur la connection connState: object = QLabel("Non connecté.") # Widgets des boutons de navigation btnAccueil: object = QPushButton("Accueil") btnAccueil.clicked.connect(lambda: mainHome.window_main(mainWindow)) btnInscription: object = QPushButton("Inscription") btnInscription.clicked.connect(lambda: mainRegister.window_main(mainWindow)) # Partie layout des boutons de navigation layUser: object = QHBoxLayout() layUser.addWidget(btnAccueil) layUser.addStretch() layUser.addWidget(btnInscription) grpUtilisateur: object = QGroupBox("Gestion de l'utilisateur") grpUtilisateur.setLayout(layUser) # Widgets du menu de conenxion labMail: object = QLabel("Email") inpMail: object = QLineEdit(maxLength=128) labPassword: object = QLabel("Mot de passe") inpPassword: object = QLineEdit(maxLength=128) inpPassword.setEchoMode(QLineEdit.Password) btnConnexion: object = QPushButton("Connexion") btnConnexion.clicked.connect( lambda: core_login( mainWindow, inpMail.text(), inpPassword.text() ) ) # Grid layout du menu de connexion layGrid: object = QGridLayout() layGrid.addWidget(labMail, 0, 0) layGrid.addWidget(inpMail, 0, 1) layGrid.addWidget(labPassword, 1, 0) layGrid.addWidget(inpPassword, 1, 1) layGrid.addWidget(btnConnexion, 2, 1) # Layout du menu de connecion accueillant le QGridLayout layLogin: object = QHBoxLayout() layLogin.addStretch() layLogin.addLayout(layGrid) layLogin.addStretch() # GroupBox du menu de connexion grpLogin: object = QGroupBox("Connexion") grpLogin.setLayout(layLogin) # Layout du widget principal layMain: object = QVBoxLayout() layMain.addWidget(connState) layMain.addWidget(grpUtilisateur) layMain.addStretch() layMain.addWidget(grpLogin) layMain.addStretch() # On supprime l'ancien QWidget et on en crée un nouveau # avec les éléments et la lyout de cette de la fonction mainWindow.mainWidget.deleteLater() mainWindow.mainWidget = QWidget() mainWindow.mainWidget.setLayout(layMain) mainWindow.setCentralWidget(mainWindow.mainWidget)