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\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();
}

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

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

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

@ -3,7 +3,7 @@
namespace model;
class MdlUser extends MdlBase{
private JoueurGateway $gw;
private UtilisateurConnecteGateway $gw;
public function __construct(){
parent::__construct();
@ -17,19 +17,23 @@ 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 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);
}
}

@ -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 getId(): int
{
return $this->id;
}
/**
* @return string
*/
public function setEmail(string $email): void
public function getPassword(): string
{
parent::setUsername($email);
return $this->password;
}
}
Loading…
Cancel
Save