summaryrefslogtreecommitdiff
path: root/src/app/mainLogin.py
blob: bd3f9160b5ac2adfa7a8f8743f7d8b05cec61f65 (plain)
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)