From d1810f07e898443d8b08ee174ea01291b3a9cfba Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Tue, 21 Nov 2023 23:37:52 +0100 Subject: [PATCH 1/6] FIX : var type --- project/src/model/mdl/MdlUser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/src/model/mdl/MdlUser.php b/project/src/model/mdl/MdlUser.php index 68a23c1..aeea164 100755 --- a/project/src/model/mdl/MdlUser.php +++ b/project/src/model/mdl/MdlUser.php @@ -3,7 +3,7 @@ namespace model; class MdlUser extends MdlBase{ - private JoueurGateway $gw; + private UtilisateurConnecteGateway $gw; public function __construct(){ parent::__construct(); From 8002aeed16d45a61d67fb724fc83839a81a9aa71 Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Tue, 21 Nov 2023 23:54:14 +0100 Subject: [PATCH 2/6] ADD : getter et getFromEmail --- project/src/model/gateways/AdminGateway.php | 19 ++++++++++---- project/src/model/mdl/MdlAdmin.php | 16 +++--------- project/src/model/metier/Admin.php | 29 ++++++++++++++------- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/project/src/model/gateways/AdminGateway.php b/project/src/model/gateways/AdminGateway.php index e1b2a97..b566ae4 100755 --- a/project/src/model/gateways/AdminGateway.php +++ b/project/src/model/gateways/AdminGateway.php @@ -51,14 +51,14 @@ class AdminGateway $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->execute(); } - public function getUser(int $id): User + public function getUser(int $id): Admin { $sql = "SELECT * FROM Admin WHERE id=:id"; $stmt = $this->con->prepare($sql); $stmt->bindValue(':id', $id); $stmt->execute(); $result = $stmt->fetch(); - return new User($result['id'], $result['email'], $result['password']); + return new Admin($result['id'], $result['email'], $result['password']); } public function getUsers(): array { @@ -68,7 +68,7 @@ class AdminGateway $result = $stmt->fetchAll(); $users = []; foreach ($result as $user) { - $users[] = new User($user['id'], $user['email'], $user['password']); + $users[] = new Admin($user['id'], $user['email'], $user['password']); } return $users; } @@ -100,7 +100,7 @@ class AdminGateway $result = $stmt->fetch(); return $result['id']; } - public function getUserByEmailAndPassword(string $email, string $password): User + public function getUserByEmailAndPassword(string $email, string $password): Admin { $sql = "SELECT * FROM Admin WHERE email=:email AND password=:password"; $stmt = $this->con->prepare($sql); @@ -108,6 +108,15 @@ class AdminGateway $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->execute(); $result = $stmt->fetch(); - return new User($result['id'], $result['email'], $result['password']); + return new Admin($result['id'], $result['email'], $result['password']); + } + + public function getFromEmail(string $email): array + { + $this->con->executeQuery( + "SELECT id, email, password FROM Admin WHERE email = :email;", + [":pseudo" => [$email, $this->con::PARAM_STR]] + ); + return $this->con->getOneResult(); } } diff --git a/project/src/model/mdl/MdlAdmin.php b/project/src/model/mdl/MdlAdmin.php index ea3a10f..e92adb3 100755 --- a/project/src/model/mdl/MdlAdmin.php +++ b/project/src/model/mdl/MdlAdmin.php @@ -38,19 +38,9 @@ class MdlAdmin extends MdlBase{ $_SESSION = array(); header("Location: ."); } -/* - public function setPseudo(int $id, string $pseudo): User{ - $this->gw->setPseudo($id, $pseudo); - return $this->getFromId($id); - } - public function insertInvite(string $pseudo, string $idSession): User{ - $id = $this->gw->insertInvite($pseudo, $idSession); - return $this->getFromId($id); + public function getFromEmail(string $email): Admin{ + $row = $this->gw->getFromEmail($email); + return new Admin($row['id'], $row['email'], $row['password']); } - - public function getFromId(int $id): User{ - $row = $this->gw->getFromId($id); - return new Invite($row['idjoueur'], $row['pseudo'], $row['idsession']); - }*/ } \ No newline at end of file diff --git a/project/src/model/metier/Admin.php b/project/src/model/metier/Admin.php index 30a40cb..0029aa2 100755 --- a/project/src/model/metier/Admin.php +++ b/project/src/model/metier/Admin.php @@ -2,19 +2,21 @@ namespace model; -class Admin extends User +class Admin { + private int $id; private string $email; + private string $password; /** * @param int $id - * @param string $username * @param string $password * @param string $email */ - public function __construct(int $id, string $username, string $password, string $email) + public function __construct(int $id, string $email, string $password) { - parent::__construct($id, $username, $password); + $this->id=$id; + $this->password=$password; $this->email = $email; } @@ -23,14 +25,23 @@ class Admin extends User */ public function getEmail(): string { - return parent::getUsername(); + return $this->email; } /** - * @param string $email + * @return int */ - public function setEmail(string $email): void + public function getId(): int { - parent::setUsername($email); - } + return $this->id; + } + + /** + * @return string + */ + public function getPassword(): string + { + return $this->password; + } + } \ No newline at end of file From f68c570426d00cde4128a9c9f0bdd0efede538d6 Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Tue, 21 Nov 2023 23:54:26 +0100 Subject: [PATCH 3/6] ADD : getfrompseudo --- .../gateways/UtilisateurConnecteGateway.php | 16 ++++++++++++++++ project/src/model/mdl/MdlUser.php | 18 +++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/project/src/model/gateways/UtilisateurConnecteGateway.php b/project/src/model/gateways/UtilisateurConnecteGateway.php index b70a1d8..524da2f 100644 --- a/project/src/model/gateways/UtilisateurConnecteGateway.php +++ b/project/src/model/gateways/UtilisateurConnecteGateway.php @@ -32,4 +32,20 @@ class UtilisateurConnecteGateway extends JoueurGateway { ] ); } + + public function getFromId(int $id){ + $this->con->executeQuery( + "SELECT idJoueur, pseudo, email, password FROM Utilisateur JOIN Joueur ON id=idJoueur WHERE id = :id;", + [":id" => [$id, $this->con::PARAM_INT]] + ); + return $this->con->getOneResult(); + } + + public function getFromPseudo(string $pseudo){ + $this->con->executeQuery( + "SELECT idJoueur, pseudo, email, password FROM Utilisateur JOIN Joueur ON id=idJoueur WHERE pseudo = :pseudo;", + [":pseudo" => [$pseudo, $this->con::PARAM_STR]] + ); + return $this->con->getOneResult(); + } } \ No newline at end of file diff --git a/project/src/model/mdl/MdlUser.php b/project/src/model/mdl/MdlUser.php index aeea164..cdb4305 100755 --- a/project/src/model/mdl/MdlUser.php +++ b/project/src/model/mdl/MdlUser.php @@ -17,19 +17,19 @@ class MdlUser extends MdlBase{ $temp->insertJoueur($username); return $this->gw->register($username, $password, $temp->getFromPseudo($username)["id"]); } -/* - public function setPseudo(int $id, string $pseudo): User{ + + public function setPseudo(int $id, string $pseudo): Utilisateur{ $this->gw->setPseudo($id, $pseudo); return $this->getFromId($id); } - public function insertInvite(string $pseudo, string $idSession): User{ - $id = $this->gw->insertInvite($pseudo, $idSession); - return $this->getFromId($id); + public function getFromId(int $id): Utilisateur{ + $row = $this->gw->getFromId($id); + return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']); } - public function getFromId(int $id): User{ - $row = $this->gw->getFromId($id); - return new Invite($row['idjoueur'], $row['pseudo'], $row['idsession']); - }*/ + public function getFromPseudo(string $pseudo): Utilisateur{ + $row = $this->gw->getFromPseudo($pseudo); + return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']); + } } \ No newline at end of file From e2e020b6b0cb6174c735af1874a796aed326f7ab Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Wed, 22 Nov 2023 00:29:49 +0100 Subject: [PATCH 4/6] ADD : variable session role --- project/src/controller/UserController.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/project/src/controller/UserController.php b/project/src/controller/UserController.php index f1884af..19b0819 100755 --- a/project/src/controller/UserController.php +++ b/project/src/controller/UserController.php @@ -7,6 +7,7 @@ use Exception; use model\ConfigurationJeu; use model\Connection; use model\GameGateway; +use model\Joueur; use model\MdlDifficulte; use model\MdlJeu; use model\PseudoDejaPrisException; @@ -14,6 +15,7 @@ use model\ValidationException; use model\MdlUser; use model\MdlAdmin; use model\LoginException; +use model\Utilisateur; class UserController { @@ -77,6 +79,7 @@ class UserController { if ($ug->login($_REQUEST['login'], $_REQUEST['password'])) { $_SESSION['pseudo'] = $_REQUEST['login']; $_SESSION['isLogged'] = true; + $_SESSION['role'] = $ug->getFromEmail($_REQUEST['login']); header("Location: ."); } else { //voir si c'est un admin @@ -85,6 +88,7 @@ class UserController { $_SESSION['pseudo'] = $_REQUEST['login']; $_SESSION['isAdmin'] = true; $_SESSION['isLogged'] = true; + unset($_SESSION['role']); header("Location: ."); } else { $dVueErreur[] = "Connexion échouée"; @@ -126,6 +130,7 @@ class UserController { } public function logout(){ + session_destroy(); $_SESSION=[]; header("Location: ."); } @@ -171,7 +176,11 @@ class UserController { $difficulte = (new MdlDifficulte())->getFromId($id_difficulte); $_SESSION['configuration'] = new ConfigurationJeu($jeu, $difficulte); - header("Location: ".$basePath."/pseudo"); + if(isset($_SESSION['role'])){ + header('Location: '.$basePath.'/jouer'); + }else{ + header("Location: ".$basePath."/pseudo"); + } #echo $twig->render('accueil.html', ['dVue' => $dVue, 'dVueErreur' => $dVueErreur]); }else{ $this->CreateParty($dVueErreur); From e9badcc1d9fae6c6e6791598bc0c406338f4f39c Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Wed, 22 Nov 2023 00:30:07 +0100 Subject: [PATCH 5/6] =?UTF-8?q?ADD=20:=20m=C3=A9thodes=20getFromEmail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/src/model/gateways/GameGateway.php | 29 ------------------- .../gateways/UtilisateurConnecteGateway.php | 14 +++++++-- project/src/model/mdl/MdlUser.php | 8 +++-- 3 files changed, 17 insertions(+), 34 deletions(-) delete mode 100755 project/src/model/gateways/GameGateway.php diff --git a/project/src/model/gateways/GameGateway.php b/project/src/model/gateways/GameGateway.php deleted file mode 100755 index 1b37f85..0000000 --- a/project/src/model/gateways/GameGateway.php +++ /dev/null @@ -1,29 +0,0 @@ -con = $con; - } - public static function getGames() : array - { - // TODO: implémenter requête SQL - return array( - 0 => ["Qui-est-ce ?", "Le qui est-ce...."], - 1 => ["Kahoot", "Le Kahoot permet..."] - ); - } - - public function getGameByCode(int $code) : array { - $query = 'SELECT * FROM Partie WHERE codeInvitation=:id'; - $this->con->executeQuery($query,array( - ':id' => [$code, PDO::PARAM_INT] - )); - return $this->con->getResults(); - } -} \ No newline at end of file diff --git a/project/src/model/gateways/UtilisateurConnecteGateway.php b/project/src/model/gateways/UtilisateurConnecteGateway.php index 524da2f..8a72ab8 100644 --- a/project/src/model/gateways/UtilisateurConnecteGateway.php +++ b/project/src/model/gateways/UtilisateurConnecteGateway.php @@ -41,11 +41,19 @@ class UtilisateurConnecteGateway extends JoueurGateway { return $this->con->getOneResult(); } - public function getFromPseudo(string $pseudo){ + public function getFromEmail(string $email){ $this->con->executeQuery( - "SELECT idJoueur, pseudo, email, password FROM Utilisateur JOIN Joueur ON id=idJoueur WHERE pseudo = :pseudo;", - [":pseudo" => [$pseudo, $this->con::PARAM_STR]] + "SELECT idJoueur, pseudo, email, password FROM Utilisateur JOIN Joueur ON id=idJoueur WHERE email = :email;", + [":email" => [$email, $this->con::PARAM_STR]] ); return $this->con->getOneResult(); } + + public function addScientifiqueDecouvert(int $idUtilisateur, int $idScientifique){ + $this->con->executeQuery( + "INSERT INTO Decouvrir(idUtilisateur, idScientifique) VALUES (:idUtilisateur, :idScientifique);", + [":idUtilisateur" => [$idUtilisateur, $this->con::PARAM_INT], + ":idScientifique" => [$idScientifique, $this->con::PARAM_INT]] + ); + } } \ No newline at end of file diff --git a/project/src/model/mdl/MdlUser.php b/project/src/model/mdl/MdlUser.php index cdb4305..ab9aca5 100755 --- a/project/src/model/mdl/MdlUser.php +++ b/project/src/model/mdl/MdlUser.php @@ -28,8 +28,12 @@ class MdlUser extends MdlBase{ return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']); } - public function getFromPseudo(string $pseudo): Utilisateur{ - $row = $this->gw->getFromPseudo($pseudo); + public function getFromEmail(string $email): Utilisateur{ + $row = $this->gw->getFromEmail($email); return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']); } + + public function addScientifiqueDecouvert(int $idUtilisateur, int $idScientifique){ + $this->gw->addScientifiqueDecouvert($idUtilisateur, $idScientifique); + } } \ No newline at end of file From 76d9db214bc39b7c15b7a38b9f957d31c0aaee23 Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Wed, 22 Nov 2023 00:30:30 +0100 Subject: [PATCH 6/6] =?UTF-8?q?ADD=20:=20ajout=20scientifique=20d=C3=A9cou?= =?UTF-8?q?vert=20=C3=A0=20l'utilisateur=20en=20fin=20de=20partie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/src/controller/PenduController.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/project/src/controller/PenduController.php b/project/src/controller/PenduController.php index f881d34..3b9ef19 100755 --- a/project/src/controller/PenduController.php +++ b/project/src/controller/PenduController.php @@ -7,14 +7,18 @@ use model\Joueur; use model\MdlPendu; use model\MdlScientifique; use config\Validation; +use model\MdlUser; +use model\Utilisateur; use model\ValidationException; class PenduController{ private array $dVue; + private Joueur $role; private array $dVueErreur; private MdlPendu $pendu; public function __construct(Joueur $role, ConfigurationJeu $configJeu) { + $this->role=$role; $this->dVue = []; $this->dVueErreur = []; if(isset($_SESSION['pendu']) && Validation::valMdlPendu($_SESSION['pendu'], $this->dVueErreur)){ @@ -57,8 +61,15 @@ class PenduController{ echo $twig->render($config['templates']['pendu'], ['dVue' => $this->dVue, 'dVueErreur'=>$this->dVueErreur]); } + private function ajouterScientifiqueDecouvert(){ + if($this->role instanceof Utilisateur){ + (new MdlUser())->addScientifiqueDecouvert($this->role->getId(), $this->pendu->getScientifique()->getId()); + } + } + private function renderAgagne(){ $this->dVue['messageScore'] = "Vous avez gagné !"; + $this->ajouterScientifiqueDecouvert(); $this->renderScore(); }