summaryrefslogtreecommitdiff
path: root/Database/meth_dbuser.php
blob: c0afb8c45094152c1cf80c78dc34154d56ca7676 (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
<?php
// ****************************************************************************
// Description: Ensemble de méthodes pour étendre dbmain 
//              afin de gérer les utilisateurs 
// ****************************************************************************
// 
// Import de dbmain
require_once(dirname( __FILE__ )."/dbmain.php");
// Extension de cette classe avec dbmain
class DbUser extends DbMain {

    // ****************************************************************************
    // Gestion d'un utilisateur
    // ****************************************************************************

    // Enregistrement d'un nouvel utilisateur 
    final public function user_register($email, $pass, $is_client, $is_pro, $is_admin) {
        // On vérifie si l'email existe deja dans la bdd
        $exist = $this->check_exist_email($email);
        // Si non
        if (!$exist) {
            // Chiffrement du pass
            $crypt = $this->crypt_pass($pass);
            // Préparation de la requète
            $reqAddUser = "INSERT INTO ".$this->tableUserAccount." 
                (email, password, inscriptionDate, isClient, isPro, isAdmin) 
                VALUES (?, ?, ?, ?, ?, ?)";
            // Execution de la requète
            $this->exec_cmd($reqAddUser,
                            array($email,
                                  $crypt,
                                  date("Y-m-d H:i:s"),
                                  $is_client,
                                  $is_pro,
                                  $is_admin
                                  )
                            );
            // Retourne 1 pour réussite
            return 1;
        } else {
            // Retourne 0 pour échec
            return 0;
        }
    }

    // Vérification de la combinaison email - pass pour authentification
    final public function user_check_credential($email, $pass) {
        // Préparation de la requète pour récupérer les infos ou l'email est présent
        $reqCheckCredential = "SELECT userId, password 
            FROM ".$this->tableUserAccount." WHERE email = ? ";
        // Chiffrement du mot de passe
        $crypt = $this->crypt_pass($pass);
        // Execution de la requète
        $data = $this->exec_cmd($reqCheckCredential, array($email))->fetchAll(PDO::FETCH_ASSOC);
        // Vérifiaction de correspondance email & pass
        foreach ($data as $rows) {
            if ($rows["password"] == $crypt) {
                return $rows["userId"];
            }
        }
    }

    // Mise à jour des infos d'un utilisateur
    final public function user_infos_update($lastname, $firstname, $job, $degree,
                                           $capability, $description, $phoneNumber,
                                           $adress, $zipCode, $city, $userId) {
        // Préparation de la requète pour mise à jour des infos
        $reqAddInfo = "REPLACE INTO ".$this->tableUserInfo." 
            (lastname, firstname, job, degree, capability,
            description, phoneNumber, adress, zipCode, city, userId)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        // Exécution de la requète
        $this->exec_cmd($reqAddInfo,
                        array($lastname, $firstname, $job, $degree,
                              $capability, $description, $phoneNumber,
                              $adress, $zipCode, $city, $userId
                              )
                        );
    }


    // ****************************************************************************
    // Gestion du token-autologin
    // ****************************************************************************

    // Vérification de la combinaison email - jeton d'auto-login pour authentification
    final public function autologin_token_check($email, $token) {
        // Préparation de la requète pour récupérer les infos ou l'email est présent
        $reqCheckToken = "SELECT userId, tokenAutoLogin 
            FROM ".$this->tableUserAccount." WHERE email = ?";
        // Exécution de la requète
        $data = $this->exec_cmd($reqCheckToken, array($email))->fetchAll(PDO::FETCH_ASSOC);
        // Vérifiaction de correspondance email & jeton d'auto-connection
        foreach ($data as $rows) {
            if ($rows["tokenAutoLogin"] == $token) {
                return $rows["userId"];
            }
        }
    }

    // Mise à jour du jeton d'auto-login
    final public function autologin_token_update($email, $token) {
        // Préparation de la requète pour mise à jour du jeton d'auto-connection
        $reqUpdateToken = "UPDATE ".$this->tableUserAccount." SET tokenAutoLogin = ?
            WHERE email = ?";
        // Execution de la requète
        $this->exec_cmd($reqUpdateToken, array($token, $email))->fetchAll(PDO::FETCH_ASSOC);
    }

    // Supression du jeton d'auto-login
    final public function autologin_token_delete($email) {
        // Préparation de la requète pour supression du jeton d'auto-connection
        $reqDeleteToken = "UPDATE ".$this->tableUserAccount." SET tokenAutoLogin = NULL 
            WHERE email = ?";
        // Execution de la requète
        $this->exec_cmd($reqDeleteToken, array($email))->fetchAll(PDO::FETCH_ASSOC);
    }
}
?>