diff --git a/project/src/db.sql b/project/src/db.sql index d71b199..c6f2500 100644 --- a/project/src/db.sql +++ b/project/src/db.sql @@ -101,7 +101,7 @@ CREATE TABLE Reponse( CREATE TABLE Admin( id SERIAL PRIMARY KEY, email varchar(255) NOT NULL UNIQUE, - motDePasse varchar(255) NOT NULL + password varchar(255) NOT NULL ); @@ -126,7 +126,7 @@ CREATE TABLE Invite( CREATE TABLE Utilisateur( idJoueur integer PRIMARY KEY REFERENCES Joueur(id), email varchar(255) NOT NULL UNIQUE, - motDePasse varchar(255) NOT NULL + password varchar(255) NOT NULL ); @@ -175,8 +175,8 @@ VALUES INSERT INTO Joueur(id,pseudo) VALUES (1337, 'moi, le meilleur joueur du monde'); -INSERT INTO Utilisateur(idJoueur,email,motDePasse) VALUES (1337, 'joueur','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS'); +INSERT INTO Utilisateur(idJoueur,email,password) VALUES (1337, 'joueur','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS'); -- mdp = test -INSERT INTO Admin(id,email,motDePasse) VALUES (1, 'admin','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS'); +INSERT INTO Admin(id,email,password) VALUES (1, 'admin','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS'); -- mdp = test diff --git a/project/src/model/gateways/AdminGateway.php b/project/src/model/gateways/AdminGateway.php index efcd47c..f93de9d 100644 --- a/project/src/model/gateways/AdminGateway.php +++ b/project/src/model/gateways/AdminGateway.php @@ -2,34 +2,110 @@ namespace model; -class AdminGateway +class UserGateway { private \PDO $con; - - public function __construct(\PDO $con) + private \PDOStatement $stmt; + public function __construct(Connection $con) { $this->con=$con; } - public function login(string $username, string $password): bool + public function login(string $email, string $password): bool + { + $sql = "SELECT * FROM Admin WHERE email=:email"; + $this->con->executeQuery($sql, array( + ':email' => array($email, \PDO::PARAM_STR) + )); + + $result = $this->con->getOneResult(); + + if (!empty($result)) { + return password_verify($password,$result['password']); + } + return false; + } + public function addUser(string $email, string $password): void + { + $sql = "INSERT INTO Admin (email, password) VALUES (:email, :password)"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':email', $email); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); + $stmt->execute(); + } + public function deleteUser(int $id): void { - $sql = "SELECT * FROM admin WHERE username=:username"; + $sql = "DELETE FROM Admin WHERE id=:id"; $stmt = $this->con->prepare($sql); - $stmt->bindValue(':username', $username); + $stmt->bindValue(':id', $id); + $stmt->execute(); + } + public function updateUser(int $id, string $email, string $password): void + { + $sql = "UPDATE Admin SET email=:email, password=:password WHERE id=:id"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':id', $id); + $stmt->bindValue(':email', $email); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); + $stmt->execute(); + } + public function getUser(int $id): User + { + $sql = "SELECT * FROM Admin WHERE id=:id"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':id', $id); $stmt->execute(); $result = $stmt->fetch(); - if ($result && password_verify($password, $result['password'])) { - return true; + return new User($result['id'], $result['email'], $result['password']); + } + public function getUsers(): array + { + $sql = "SELECT * FROM Admin"; + $stmt = $this->con->prepare($sql); + $stmt->execute(); + $result = $stmt->fetchAll(); + $users = []; + foreach ($result as $user) { + $users[] = new User($user['id'], $user['email'], $user['password']); } - return false; + return $users; + } + public function getHashedPasswordById(int $id): string + { + $sql = "SELECT password FROM Admin WHERE id=:id"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':id', $id); + $stmt->execute(); + $result = $stmt->fetch(); + return $result['password']; } - public function getHashedPassword(string $username): string + public function getHashedPassword(int $email): string { - $sql = "SELECT password FROM user WHERE username=:username"; + $sql = "SELECT password FROM Admin WHERE email=:email"; $stmt = $this->con->prepare($sql); - $stmt->bindValue(':username', $username); + $stmt->bindValue(':email', $email); $stmt->execute(); $result = $stmt->fetch(); return $result['password']; } -} \ No newline at end of file + + public function getUserId(string $email): int + { + $sql = "SELECT id FROM Admin WHERE email=:email"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':email', $email); + $stmt->execute(); + $result = $stmt->fetch(); + return $result['id']; + } + public function getUserByEmailAndPassword(string $email, string $password): User + { + $sql = "SELECT * FROM Admin WHERE email=:email AND password=:password"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':email', $email); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); + $stmt->execute(); + $result = $stmt->fetch(); + return new User($result['id'], $result['email'], $result['password']); + } +} diff --git a/project/src/model/gateways/UserGateway.php b/project/src/model/gateways/UserGateway.php index 9b71d26..defcfaa 100644 --- a/project/src/model/gateways/UserGateway.php +++ b/project/src/model/gateways/UserGateway.php @@ -11,7 +11,7 @@ class UserGateway $this->con=$con; } - public function login(string $email, string $motDePasse): bool + public function login(string $email, string $password): bool { $sql = "SELECT * FROM Utilisateur WHERE email=:email"; $this->con->executeQuery($sql, array( @@ -21,16 +21,16 @@ class UserGateway $result = $this->con->getOneResult(); if (!empty($result)) { - return password_verify($motDePasse,$result['motdepasse']); + return password_verify($password,$result['password']); } return false; } - public function addUser(string $email, string $motDePasse): void + public function addUser(string $email, string $password): void { - $sql = "INSERT INTO utilisateur (email, motDePasse) VALUES (:email, :motDePasse)"; + $sql = "INSERT INTO utilisateur (email, password) VALUES (:email, :password)"; $stmt = $this->con->prepare($sql); $stmt->bindValue(':email', $email); - $stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->execute(); } public function deleteUser(int $id): void @@ -40,13 +40,13 @@ class UserGateway $stmt->bindValue(':id', $id); $stmt->execute(); } - public function updateUser(int $id, string $email, string $motDePasse): void + public function updateUser(int $id, string $email, string $password): void { - $sql = "UPDATE utilisateur SET email=:email, motDePasse=:motDePasse WHERE id=:id"; + $sql = "UPDATE utilisateur SET email=:email, password=:password WHERE id=:id"; $stmt = $this->con->prepare($sql); $stmt->bindValue(':id', $id); $stmt->bindValue(':email', $email); - $stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->execute(); } public function getUser(int $id): User @@ -56,7 +56,7 @@ class UserGateway $stmt->bindValue(':id', $id); $stmt->execute(); $result = $stmt->fetch(); - return new User($result['id'], $result['email'], $result['motDePasse']); + return new User($result['id'], $result['email'], $result['password']); } public function getUsers(): array { @@ -66,18 +66,27 @@ class UserGateway $result = $stmt->fetchAll(); $users = []; foreach ($result as $user) { - $users[] = new User($user['id'], $user['email'], $user['motDePasse']); + $users[] = new User($user['id'], $user['email'], $user['password']); } return $users; } public function getHashedPasswordById(int $id): string { - $sql = "SELECT motDePasse FROM utilisateur WHERE id=:id"; + $sql = "SELECT password FROM utilisateur WHERE id=:id"; $stmt = $this->con->prepare($sql); $stmt->bindValue(':id', $id); $stmt->execute(); $result = $stmt->fetch(); - return $result['motDePasse']; + return $result['password']; + } + public function getHashedPassword(int $email): string + { + $sql = "SELECT password FROM utilisateur WHERE email=:email"; + $stmt = $this->con->prepare($sql); + $stmt->bindValue(':email', $email); + $stmt->execute(); + $result = $stmt->fetch(); + return $result['password']; } public function getUserId(string $email): int { @@ -88,14 +97,14 @@ class UserGateway $result = $stmt->fetch(); return $result['id']; } - public function getUserByEmailAndPassword(string $email, string $motDePasse): User + public function getUserByEmailAndPassword(string $email, string $password): User { - $sql = "SELECT * FROM utilisateur WHERE email=:email AND motDePasse=:motDePasse"; + $sql = "SELECT * FROM utilisateur WHERE email=:email AND password=:password"; $stmt = $this->con->prepare($sql); $stmt->bindValue(':email', $email); - $stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); + $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->execute(); $result = $stmt->fetch(); - return new User($result['id'], $result['email'], $result['motDePasse']); + return new User($result['id'], $result['email'], $result['password']); } }