Merge branch 'php' of codefirst.iut.uca.fr:tom.biard/ScienceQuest into php

php
Renaud BEURET 1 year ago
commit a32abbff13

@ -7,14 +7,18 @@ use model\Joueur;
use model\MdlPendu; use model\MdlPendu;
use model\MdlScientifique; use model\MdlScientifique;
use config\Validation; use config\Validation;
use model\MdlUser;
use model\Utilisateur;
use model\ValidationException; use model\ValidationException;
class PenduController{ class PenduController{
private array $dVue; private array $dVue;
private Joueur $role;
private array $dVueErreur; private array $dVueErreur;
private MdlPendu $pendu; private MdlPendu $pendu;
public function __construct(Joueur $role, ConfigurationJeu $configJeu) public function __construct(Joueur $role, ConfigurationJeu $configJeu)
{ {
$this->role=$role;
$this->dVue = []; $this->dVue = [];
$this->dVueErreur = []; $this->dVueErreur = [];
if(isset($_SESSION['pendu']) && Validation::valMdlPendu($_SESSION['pendu'], $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]); 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(){ private function renderAgagne(){
$this->dVue['messageScore'] = "Vous avez gagné !"; $this->dVue['messageScore'] = "Vous avez gagné !";
$this->ajouterScientifiqueDecouvert();
$this->renderScore(); $this->renderScore();
} }

@ -7,6 +7,7 @@ use Exception;
use model\ConfigurationJeu; use model\ConfigurationJeu;
use model\Connection; use model\Connection;
use model\GameGateway; use model\GameGateway;
use model\Joueur;
use model\MdlDifficulte; use model\MdlDifficulte;
use model\MdlJeu; use model\MdlJeu;
use model\MdlScientifique; use model\MdlScientifique;
@ -15,6 +16,7 @@ use model\ValidationException;
use model\MdlUser; use model\MdlUser;
use model\MdlAdmin; use model\MdlAdmin;
use model\LoginException; use model\LoginException;
use model\Utilisateur;
class UserController { class UserController {
@ -112,6 +114,7 @@ class UserController {
$_SESSION['pseudo'] = $_REQUEST['login']; $_SESSION['pseudo'] = $_REQUEST['login'];
$_SESSION['idUser'] = true; $_SESSION['idUser'] = true;
$_SESSION['isLogged'] = true; $_SESSION['isLogged'] = true;
$_SESSION['role'] = $ug->getFromEmail($_REQUEST['login']);
header("Location: ."); header("Location: .");
} else { } else {
//voir si c'est un admin //voir si c'est un admin
@ -120,6 +123,7 @@ class UserController {
$_SESSION['pseudo'] = $_REQUEST['login']; $_SESSION['pseudo'] = $_REQUEST['login'];
$_SESSION['isAdmin'] = true; $_SESSION['isAdmin'] = true;
$_SESSION['isLogged'] = true; $_SESSION['isLogged'] = true;
unset($_SESSION['role']);
header("Location: ."); header("Location: .");
} else { } else {
$dVueErreur[] = "Connexion échouée"; $dVueErreur[] = "Connexion échouée";
@ -161,6 +165,7 @@ class UserController {
} }
public function logout(){ public function logout(){
session_destroy();
$_SESSION=[]; $_SESSION=[];
header("Location: ."); header("Location: .");
} }
@ -206,7 +211,11 @@ class UserController {
$difficulte = (new MdlDifficulte())->getFromId($id_difficulte); $difficulte = (new MdlDifficulte())->getFromId($id_difficulte);
$_SESSION['configuration'] = new ConfigurationJeu($jeu, $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]); #echo $twig->render('accueil.html', ['dVue' => $dVue, 'dVueErreur' => $dVueErreur]);
}else{ }else{
$this->CreateParty($dVueErreur); $this->CreateParty($dVueErreur);

@ -51,14 +51,14 @@ class AdminGateway
$stmt->bindValue(':password', password_hash($password, 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): Admin
{ {
$sql = "SELECT * FROM Admin WHERE id=:id"; $sql = "SELECT * FROM Admin 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 new User($result['id'], $result['email'], $result['password']); return new Admin($result['id'], $result['email'], $result['password']);
} }
public function getUsers(): array public function getUsers(): array
{ {
@ -68,7 +68,7 @@ class AdminGateway
$result = $stmt->fetchAll(); $result = $stmt->fetchAll();
$users = []; $users = [];
foreach ($result as $user) { foreach ($result as $user) {
$users[] = new User($user['id'], $user['email'], $user['password']); $users[] = new Admin($user['id'], $user['email'], $user['password']);
} }
return $users; return $users;
} }
@ -100,7 +100,7 @@ class AdminGateway
$result = $stmt->fetch(); $result = $stmt->fetch();
return $result['id']; 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"; $sql = "SELECT * FROM Admin WHERE email=:email AND password=:password";
$stmt = $this->con->prepare($sql); $stmt = $this->con->prepare($sql);
@ -108,6 +108,15 @@ class AdminGateway
$stmt->bindValue(':password', password_hash($password, 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['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();
} }
} }

@ -1,29 +0,0 @@
<?php
namespace model;
use PDO;
class GameGateway
{
private Connection $con;
function __construct(Connection $con) {
$this->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();
}
}

@ -32,4 +32,28 @@ 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 getFromEmail(string $email){
$this->con->executeQuery(
"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]]
);
}
} }

@ -38,19 +38,9 @@ class MdlAdmin extends MdlBase{
$_SESSION = array(); $_SESSION = array();
header("Location: ."); 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{ public function getFromEmail(string $email): Admin{
$id = $this->gw->insertInvite($pseudo, $idSession); $row = $this->gw->getFromEmail($email);
return $this->getFromId($id); 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']);
}*/
} }

@ -3,7 +3,7 @@
namespace model; namespace model;
class MdlUser extends MdlBase{ class MdlUser extends MdlBase{
private JoueurGateway $gw; private UtilisateurConnecteGateway $gw;
public function __construct(){ public function __construct(){
parent::__construct(); parent::__construct();
@ -17,19 +17,23 @@ class MdlUser extends MdlBase{
$temp->insertJoueur($username); $temp->insertJoueur($username);
return $this->gw->register($username, $password, $temp->getFromPseudo($username)["id"]); 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); $this->gw->setPseudo($id, $pseudo);
return $this->getFromId($id); return $this->getFromId($id);
} }
public function insertInvite(string $pseudo, string $idSession): User{ public function getFromId(int $id): Utilisateur{
$id = $this->gw->insertInvite($pseudo, $idSession); $row = $this->gw->getFromId($id);
return $this->getFromId($id); return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']);
} }
public function getFromId(int $id): User{ public function getFromEmail(string $email): Utilisateur{
$row = $this->gw->getFromId($id); $row = $this->gw->getFromEmail($email);
return new Invite($row['idjoueur'], $row['pseudo'], $row['idsession']); return new Utilisateur($row['idjoueur'], $row['pseudo'], $row['email'], $row['password']);
}*/ }
public function addScientifiqueDecouvert(int $idUtilisateur, int $idScientifique){
$this->gw->addScientifiqueDecouvert($idUtilisateur, $idScientifique);
}
} }

@ -2,19 +2,21 @@
namespace model; namespace model;
class Admin extends User class Admin
{ {
private int $id;
private string $email; private string $email;
private string $password;
/** /**
* @param int $id * @param int $id
* @param string $username
* @param string $password * @param string $password
* @param string $email * @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; $this->email = $email;
} }
@ -23,14 +25,23 @@ class Admin extends User
*/ */
public function getEmail(): string 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;
}
} }
Loading…
Cancel
Save