1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
############################################################################
# #
# 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)
|