summaryrefslogtreecommitdiff
path: root/src/app/mainRegister.py
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-05-01 23:24:19 +0200
committerDebulois <quentin@debulois.fr>2022-05-01 23:24:19 +0200
commit809f5c2c7ce0bdf05287c6f1b5ec1330efb0c469 (patch)
tree786477393b2608d3dd118d3e9ae4e57380804b5a /src/app/mainRegister.py
parent1eaf21fd423e5dedf1ed4361b0e9b6cbbcfc9fa0 (diff)
Ajout du système pour mandater et mise en page des documents
Diffstat (limited to 'src/app/mainRegister.py')
-rw-r--r--src/app/mainRegister.py177
1 files changed, 177 insertions, 0 deletions
diff --git a/src/app/mainRegister.py b/src/app/mainRegister.py
new file mode 100644
index 0000000..ce9486f
--- /dev/null
+++ b/src/app/mainRegister.py
@@ -0,0 +1,177 @@
+
+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)