import re from PyQt5.QtWidgets import ( QPushButton, QHBoxLayout, QGroupBox, QLabel, QLineEdit, QWidget, QVBoxLayout, QComboBox, QGridLayout, QMessageBox ) from src.app import mainLogin, mainHome, mainLogout from src.database.dbuser import DbUser def core_register(mainWindow: object, email: str, password: str, userStatus: str) -> None: """""" dbuser: object = DbUser(mainWindow) regNumb: str = "[0-9]" regUpper: str = "[A-Z]" regSpecial: str = "[`!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?~µ°€£]" regEmail: str = "^[a-z0-9._-]+@[a-z0-9-]+\.[a-z]+" # Si vide if not email: QMessageBox.warning( mainWindow, "Email invalide", "Veuillez renseigner un email" ) return if not password: QMessageBox.warning( mainWindow, "Mot de passe invalide", "Veuillez renseigner un mot de passe" ) return if userStatus == None: QMessageBox.warning( mainWindow, "Mauvais rôle", "Veuillez selectionner un rôle" ) return # les regex if not re.fullmatch(regEmail, email): QMessageBox.warning( mainWindow, "Email invalid", "Email non conforme" ) return if len(password) < 8\ or not re.search(regNumb, password)\ or not re.search(regUpper, password)\ or not re.search(regSpecial, password): QMessageBox.warning( mainWindow, "Mot de passe invalide", ("Le mot de passe doit avoir:\n" "-Au moins 8 characters\n" "-Une majuscule\n" "-Un chiffre\n" "-Un character spécial") ) return # si email deja présent if dbuser.check_exist_email(email): QMessageBox.warning( mainWindow, "Email invalid", "Email déja utilisé" ) return succes: int = dbuser.register_user(email, password, userStatus) if succes: QMessageBox.information( mainWindow, "Inscription", "Inscription réussie!" ) mainHome.window_main(mainWindow) else: QMessageBox.warning( mainWindow, "Erreur bdd", "Erreur lors de l'inscritpion" ) def window_main(mainWindow: object) -> None: """""" if not mainWindow.userConnected: connexionState: object = QLabel("Non connecté.") else: connexionState: object = QLabel( f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}" ) btnAccueil: object = QPushButton("Accueil") btnAccueil.clicked.connect(lambda: mainHome.window_main(mainWindow)) # if not mainWindow.userConnected: btnConnexion: object = QPushButton("Connexion") btnConnexion.clicked.connect(lambda: mainLogin.window_main(mainWindow)) else: btnDeconnexion: object = QPushButton("Déconnexion") btnDeconnexion.clicked.connect( lambda: [ mainLogout.core_logout(mainWindow), mainHome.window_main(mainWindow, True) ] ) layoutUser: object = QHBoxLayout() layoutUser.addWidget(btnAccueil) layoutUser.addStretch() if not mainWindow.userConnected: layoutUser.addWidget(btnConnexion) else: layoutUser.addWidget(btnDeconnexion) grpUtilisateur: object = QGroupBox("Gestion de l'utilisateur") grpUtilisateur.setLayout(layoutUser) # labMail: object = QLabel("Email") leditMail: object = QLineEdit(maxLength=128) labPassword: object = QLabel("Mot de passe") leditPassword: object = QLineEdit(maxLength=128) leditPassword.setEchoMode(QLineEdit.Password) labStatus: object = QLabel("Rôle") comboStatus: object = QComboBox() comboStatus.addItem("Admin", 0) comboStatus.addItem("Pro", 1) comboStatus.addItem("Client", 2) # btnRegister: object = QPushButton("S'inscrire") btnRegister.clicked.connect( lambda: core_register( mainWindow, leditMail.text(), leditPassword.text(), comboStatus.currentData() ) ) # LayoutInfoConnexion: object = QGridLayout() LayoutInfoConnexion.addWidget(labMail, 0, 0) LayoutInfoConnexion.addWidget(leditMail, 0, 1) LayoutInfoConnexion.addWidget(labPassword, 1, 0) LayoutInfoConnexion.addWidget(leditPassword, 1, 1) LayoutInfoConnexion.addWidget(labStatus, 2, 0) LayoutInfoConnexion.addWidget(comboStatus, 2, 1) LayoutInfoConnexion.addWidget(btnRegister, 3, 1) # layoutGroupConnexion: object = QHBoxLayout() layoutGroupConnexion.addStretch() layoutGroupConnexion.addLayout(LayoutInfoConnexion) layoutGroupConnexion.addStretch() grpConnexion: object = QGroupBox("Inscription") grpConnexion.setLayout(layoutGroupConnexion) # layoutMain: object = QVBoxLayout() layoutMain.addWidget(connexionState) layoutMain.addWidget(grpUtilisateur) layoutMain.addStretch() layoutMain.addWidget(grpConnexion) layoutMain.addStretch() # mainWindow.mainWidget.deleteLater() mainWindow.mainWidget = QWidget() mainWindow.mainWidget.setLayout(layoutMain) mainWindow.setCentralWidget(mainWindow.mainWidget)