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( CREATE TABLE Admin(
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
email varchar(255) NOT NULL UNIQUE, 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( CREATE TABLE Utilisateur(
idJoueur integer PRIMARY KEY REFERENCES Joueur(id), idJoueur integer PRIMARY KEY REFERENCES Joueur(id),
email varchar(255) NOT NULL UNIQUE, 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 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 -- 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 -- mdp = test

@ -2,34 +2,110 @@
namespace model; namespace model;
class AdminGateway class UserGateway
{ {
private \PDO $con; private \PDO $con;
private \PDOStatement $stmt;
public function __construct(\PDO $con) public function __construct(Connection $con)
{ {
$this->con=$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 = $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(); $stmt->execute();
$result = $stmt->fetch(); $result = $stmt->fetch();
if ($result && password_verify($password, $result['password'])) { return new User($result['id'], $result['email'], $result['password']);
return true;
} }
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 = $this->con->prepare($sql);
$stmt->bindValue(':username', $username); $stmt->bindValue(':email', $email);
$stmt->execute(); $stmt->execute();
$result = $stmt->fetch(); $result = $stmt->fetch();
return $result['password']; 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; $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"; $sql = "SELECT * FROM Utilisateur WHERE email=:email";
$this->con->executeQuery($sql, array( $this->con->executeQuery($sql, array(
@ -21,16 +21,16 @@ class UserGateway
$result = $this->con->getOneResult(); $result = $this->con->getOneResult();
if (!empty($result)) { if (!empty($result)) {
return password_verify($motDePasse,$result['motdepasse']); return password_verify($password,$result['password']);
} }
return false; 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 = $this->con->prepare($sql);
$stmt->bindValue(':email', $email); $stmt->bindValue(':email', $email);
$stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT));
$stmt->execute(); $stmt->execute();
} }
public function deleteUser(int $id): void public function deleteUser(int $id): void
@ -40,13 +40,13 @@ class UserGateway
$stmt->bindValue(':id', $id); $stmt->bindValue(':id', $id);
$stmt->execute(); $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 = $this->con->prepare($sql);
$stmt->bindValue(':id', $id); $stmt->bindValue(':id', $id);
$stmt->bindValue(':email', $email); $stmt->bindValue(':email', $email);
$stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT));
$stmt->execute(); $stmt->execute();
} }
public function getUser(int $id): User public function getUser(int $id): User
@ -56,7 +56,7 @@ class UserGateway
$stmt->bindValue(':id', $id); $stmt->bindValue(':id', $id);
$stmt->execute(); $stmt->execute();
$result = $stmt->fetch(); $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 public function getUsers(): array
{ {
@ -66,18 +66,27 @@ class UserGateway
$result = $stmt->fetchAll(); $result = $stmt->fetchAll();
$users = []; $users = [];
foreach ($result as $user) { foreach ($result as $user) {
$users[] = new User($user['id'], $user['email'], $user['motDePasse']); $users[] = new User($user['id'], $user['email'], $user['password']);
} }
return $users; return $users;
} }
public function getHashedPasswordById(int $id): string 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 = $this->con->prepare($sql);
$stmt->bindValue(':id', $id); $stmt->bindValue(':id', $id);
$stmt->execute(); $stmt->execute();
$result = $stmt->fetch(); $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 public function getUserId(string $email): int
{ {
@ -88,14 +97,14 @@ class UserGateway
$result = $stmt->fetch(); $result = $stmt->fetch();
return $result['id']; 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 = $this->con->prepare($sql);
$stmt->bindValue(':email', $email); $stmt->bindValue(':email', $email);
$stmt->bindValue(':motDePasse', password_hash($motDePasse, PASSWORD_DEFAULT)); $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT));
$stmt->execute(); $stmt->execute();
$result = $stmt->fetch(); $result = $stmt->fetch();
return new User($result['id'], $result['email'], $result['motDePasse']); return new User($result['id'], $result['email'], $result['password']);
} }
} }

Loading…
Cancel
Save