Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
user.dao.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\Models;
11
12use DateMalformedStringException;
13use DateTime;
14use Exception;
15use PDO;
16
22{
27 private ?PDO $pdo;
28
33 public function __construct(?PDO $pdo)
34 {
35 $this->pdo = $pdo;
36 }
37
42 public function getPdo(): ?PDO
43 {
44 return $this->pdo;
45 }
46
51 public function setPdo(?PDO $pdo): void
52 {
53 $this->pdo = $pdo;
54 }
55
62 public function findById(int $id): ?User
63 {
64 $stmt = $this->pdo->prepare(
65 'SELECT *
66 FROM ' . DB_PREFIX . 'user
67 WHERE id = :id');
68 $stmt->bindParam(':id', $id);
69 $stmt->execute();
70 $stmt->setFetchMode(PDO::FETCH_ASSOC);
71 $userTab = $stmt->fetch();
72 if ($userTab === false) {
73 return null;
74 }
75 return $this->hydrate($userTab);
76 }
77
84 public function hydrate(array $data): User
85 {
86 $user = new User();
87 $user->setId($data['id']);
88 $user->setEmail($data['email']);
89 $user->setEmailVerifiedAt($data['email_verified_at'] ? new DateTime($data['email_verified_at']) : null);
90 $user->setEmailVerifyToken($data['email_verif_token']);
91 $user->setPassword($data['password']);
92 $user->setDisabled($data['disabled']);
93 $user->setCreatedAt(new DateTime($data['created_at']));
94 $user->setUpdatedAt(new DateTime($data['updated_at']));
95 return $user;
96 }
97
103 public function update(User $user): bool
104 {
105 $stmt = $this->pdo->prepare(
106 'UPDATE ' . DB_PREFIX . 'user
107 SET email = :email,
108 email_verified_at = :email_verified_at,
109 email_verif_token = :email_verif_token,
110 password = :password,
111 disabled = :disabled
112 WHERE id = :id'
113 );
114
115 $email = $user->getEmail();
116 $verifiedAt = $user->getEmailVerifiedAt()?->format('Y-m-d H:i:s');
117 $emailVerifyToken = $user->getEmailVerifyToken();
118 $password = $user->getPassword();
119 $disabled = $user->getDisabled();
120 $id = $user->getId();
121
122 $stmt->bindParam(':email', $email);
123 $stmt->bindParam(':email_verified_at', $verifiedAt);
124 $stmt->bindParam(':email_verif_token', $emailVerifyToken);
125 $stmt->bindParam(':password', $password);
126 $stmt->bindParam(':disabled', $disabled);
127 $stmt->bindParam(':id', $id);
128 return $stmt->execute();
129 }
130
131
139 public function findByEmail(?string $email): ?User
140 {
141 $stmt = $this->pdo->prepare(
142 'SELECT *
143 FROM ' . DB_PREFIX . 'user
144 WHERE email = :email');
145 $stmt->bindParam(':email', $email);
146 $stmt->execute();
147 $stmt->setFetchMode(PDO::FETCH_ASSOC);
148 $userTab = $stmt->fetch();
149 if ($userTab === false) {
150 return null;
151 }
152 return $this->hydrate($userTab);
153 }
154
164 public function disableAccount($id): void
165 {
166 $stmt = $this->pdo->prepare(
167 'UPDATE ' . DB_PREFIX . 'user
168 SET disabled = 1
169 WHERE id = :id');
170 $stmt->bindParam(':id', $id);
171 $stmt->execute();
172 }
173
180 public function findByEmailVerifyToken(string $emailVerifToken): ?User
181 {
182 $stmt = $this->pdo->prepare(
183 'SELECT *
184 FROM ' . DB_PREFIX . 'user
185 WHERE email_verif_token = :email_verif_token');
186 $stmt->bindParam(':email_verif_token', $emailVerifToken);
187 $stmt->execute();
188 $stmt->setFetchMode(PDO::FETCH_ASSOC);
189 $userTab = $stmt->fetch();
190 if ($userTab === false) {
191 return null;
192 }
193 return $this->hydrate($userTab);
194 }
195
196
204 public function createUser(string $email, string $password, string $emailVerifToken): bool
205 {
206 $stmtUser = $this->pdo->prepare("INSERT INTO " . DB_PREFIX . "user (email, password, email_verified_at, email_verif_token, disabled) VALUES (:email, :password, null, :email_verif_token, 0)");
207 $stmtUser->bindParam(':email', $email);
208 $stmtUser->bindParam(':password', $password);
209 $stmtUser->bindParam(':email_verif_token', $emailVerifToken);
210 return $stmtUser->execute();
211 }
212
218 public function confirmUser(string $emailVerifToken): bool
219 {
220 $stmtUser = $this->pdo->prepare("UPDATE " . DB_PREFIX . "user SET email_verified_at = now(), email_verif_token = null WHERE email_verif_token = :email_verif_token");
221 $stmtUser->bindParam(':email_verif_token', $emailVerifToken);
222 return $stmtUser->execute();
223 }
224}
findByEmailVerifyToken(string $emailVerifToken)
Retourne un objet User (ou null) à partir du token de vérification d'email passé en paramètre.
Definition user.dao.php:180
disableAccount($id)
Désactive un compte utilisateur à partir de l'ID passé en paramètre.
Definition user.dao.php:164
confirmUser(string $emailVerifToken)
Confirme un utilisateur en mettant à jour la date de confirmation et en supprimant le token de vérifi...
Definition user.dao.php:218
hydrate(array $data)
Hydrate un objet User à partir des données passées en paramètre.
Definition user.dao.php:84
createUser(string $email, string $password, string $emailVerifToken)
Crée un utilisateur en base de données.
Definition user.dao.php:204
getPdo()
Retourne la connexion à la base de données.
Definition user.dao.php:42
findById(int $id)
Retourne un objet User (ou null) à partir de l'ID passé en paramètre.
Definition user.dao.php:62
setPdo(?PDO $pdo)
Modifie la connexion à la base de données.
Definition user.dao.php:51
findByEmail(?string $email)
Definition user.dao.php:139
__construct(?PDO $pdo)
Le constructeur de la classe UserDAO.
Definition user.dao.php:33
update(User $user)
Met à jour un utilisateur en base de données.
Definition user.dao.php:103
getEmail()
Retourne l'adresse email de l'utilisateur.
getPassword()
Retourne le mot de passe de l'utilisateur.
getId()
Retourne l'identifiant de l'utilisateur.
getEmailVerifyToken()
Retourne le token de vérification de l'adresse email.
getEmailVerifiedAt()
Retourne la date de vérification de l'adresse e-mail.
getDisabled()
Retourne l'état de l'utilisateur (activé ou désactivé)
const DB_PREFIX
Préfixe des tables de la base de données.
Definition db.php:52