modifier admingw et changer motDePasse a password

correction_routeur^2
Gwenael PLANCHON 1 year ago
parent a0ed9eaa34
commit 4b6c68607f

@ -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

@ -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']);
}
return false;
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 $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'];
}
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']);
}
}

@ -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']);
}
}

Loading…
Cancel
Save