feat : Connexion + add Player

pull/37/head
Jeremy DUCOURTHIAL 1 year ago
parent 5689be418e
commit 9fa238e093

@ -9,7 +9,7 @@ class ControllerAdminAdministrators
function __construct()
{
global $dns, $user, $pass, $vues, $twig;
global $vues, $twig;
session_start();
try {
@ -26,7 +26,7 @@ class ControllerAdminAdministrators
]);
}
else {
header("Location:/login");
header("Location:/loginAdmin");
}
} catch (PDOException $e) {
// Gérez les erreurs PDO ici

@ -9,7 +9,7 @@ class ControllerAdminChapters
function __construct()
{
global $dns, $user, $pass, $vues, $twig;
global $vues, $twig;
session_start();
try {
if($_SESSION["idAdminConnected"] != null){
@ -25,7 +25,7 @@ class ControllerAdminChapters
]);
}
else {
header("Location:/login");
header("Location:/loginAdmin");
}
} catch (PDOException $e) {
// Gérez les erreurs PDO ici

@ -11,7 +11,7 @@ class ControllerAdminQuestions
function __construct()
{
global $dns, $user, $pass, $vues, $twig;
global $vues, $twig;
session_start();
try {
if ($_SESSION["idAdminConnected"] != null) {
@ -30,7 +30,7 @@ class ControllerAdminQuestions
'chapters' => $chapters,
]);
} else {
header("Location:/login");
header("Location:/loginAdmin");
}
} catch (PDOException $e) {
// Gérez les erreurs PDO ici

@ -39,6 +39,7 @@ class ControllerUser
{
echo $this->twig->render($this->vues["home"]);
}
function themeChoice()
{
$chapters = $this->mdChapter->getChapters();
@ -46,6 +47,7 @@ class ControllerUser
'chapters' => $chapters,
]);
}
function singleplayer()
{
echo $this->twig->render($this->vues["singleplayer"]);
@ -67,7 +69,7 @@ class ControllerUser
function loginPlayer()
{
echo $this->twig->render($this->vues["loginAdmin"], [
echo $this->twig->render($this->vues["loginPlayer"], [
'error' => $_SESSION["error"],
]);
@ -90,7 +92,27 @@ class ControllerUser
header("Location:/admin/administrators");
} else {
$_SESSION["error"] = "utilisateur introuvable.";
header("Location:/login");
header("Location:/loginAdmin");
}
}
function verifyPlayer()
{
$nickname = $_POST['nickname'];
$password = $_POST['password'];
$Player = [
'nickname' => $nickname,
'password' => $password,
];
$PlayerIsOk = $this->mdPlayer->verifyPlayer($Player);
if ($PlayerIsOk != null) {
$_SESSION["idPlayerConnected"] = $PlayerIsOk;
header("Location:/userStatus");
} else {
$_SESSION["error"] = "utilisateur introuvable.";
header("Location:/loginPlayer");
}
}
@ -189,6 +211,22 @@ class ControllerUser
}
}
}
function userStatus(){
if($_SESSION["idPlayerConnected"] != null){
//$this->mdAdministrator = new ModelAdministrator();
//$administrators = $this->mdAdministrator->getAdministrators();
echo $this->twig->render($this->vues["userStatus"]);
}
else {
header("Location:/loginPlayer");
}
}
function passer()
{
$numQuestion = $_POST["numQuestion"];

@ -9,7 +9,7 @@ class ControllerUserLobby
function __construct()
{
global $dns, $user, $pass, $vues, $twig;
global $vues, $twig;
session_start();
try {
$this->twig =$twig;

@ -9,18 +9,18 @@ class ControllerUserPlayers
function __construct()
{
global $dns, $user, $pass, $vues, $twig;
global $vues, $twig;
session_start();
try {
if($_SESSION["idAdminConnected"] != null){
if($_SESSION["idPlayerConnected"] != null){
$this->twig =$twig;
$this->vues = $vues;
$this->mdPlayer = new ModelPlayer();
}
else {
header("Location:/login");
header("Location:/loginPlayer");
}
} catch (PDOException $e) {
// Gérez les erreurs PDO ici
@ -30,28 +30,28 @@ class ControllerUserPlayers
}
function delete($param) {
$this->mdPlayer->deleteAdministratorByID($param["id"]);
$this->mdPlayer->deletePlayerByID($param["id"]);
header("Location:/admin/administrators");
}
function add($param) {
$username = $_POST['username'];
$nickname = $_POST['nickname'];
$password = $_POST['password'];
$Player = [
'username' => $username,
'nickname' => $nickname,
'password' => $password,
];
$this->mdPlayer->addAdministrator($Player);
$this->mdPlayer->addPlayer($Player);
header("Location:/loginPlayer");
}
function updatemodal($param) {
$administrator = $this->mdPlayer->getAdministratorByID($param["id"]);
$player = $this->mdPlayer->getPlayerByID($param["id"]);
echo $this->twig->render($this->vues["adminAdministratorsModal"], [
'administrator' => $administrator,
@ -69,7 +69,7 @@ class ControllerUserPlayers
'password' => $password,
];
$this->mdPlayer->updateAdministrator($id,$Admin);
$this->mdPlayer->updatePlayer($id,$Admin);
header("Location:/admin/administrators");
}

@ -3,7 +3,7 @@ class FrontController
{
function __construct()
{
global $dsn, $user, $pass, $vues;
global $vues;
try {
// Initialize AltoRouter
@ -25,8 +25,8 @@ class FrontController
$router->map('GET', '/admin/questions', 'ControllerAdminQuestions');
$router->map('POST', '/admin/questions/[a:action]', 'ControllerAdminQuestions');
$router->map('GET', '/admin/questions/[a:action]/[i:id]', 'ControllerAdminQuestions');
$router->map('POST', '/user/players/[a:action]', 'ControllerAdminQuestions');
$router->map('GET', '/user/players/[a:action]/[i:id]', 'ControllerAdminQuestions');
$router->map('POST', '/user/players/[a:action]', 'ControllerUserPlayers');
$router->map('GET', '/user/players/[a:action]/[i:id]', 'ControllerUserPlayers');
// Match the current request
$match = $router->match();

@ -12,13 +12,12 @@ class GatewayPlayer
public function addPlayer($player)
{
$query = "insert into players(id,nickname,hashedPassword) values (:id,:nickname,:hashedPassword);";
$query = "insert into players(nickname,password) values (:nickname,:password);";
$this->con->executeQuery(
$query,
array(
':id' => array($player->getId(), PDO::PARAM_INT),
':nickname' => array($player['nickname'], PDO::PARAM_STR),
':hashedPassword' => array($player['hashedPassword'], PDO::PARAM_STR)
':password' => array(md5($player['password']), PDO::PARAM_STR)
)
);
}
@ -85,7 +84,7 @@ class GatewayPlayer
$query,
array(
':nickname' => array($player['nickname'], PDO::PARAM_STR),
':password' => array($player['password'], PDO::PARAM_STR)
':password' => array(md5($player['password']), PDO::PARAM_STR)
)
);
$results = $this->con->getResults();

@ -2,6 +2,7 @@
//chargement config
require_once(__DIR__ . '/usages/Config.php');
require_once(__DIR__ . '/usages/Config_DB.php');
//chargement for twig
require __DIR__ . '/vendor/autoload.php';

@ -14,6 +14,12 @@ class ModelPlayer
$this->gwPlayer->addPlayer($player);
}
public function verifyPlayer($player)
{
$playerId = $this->gwPlayer->verifyPlayer($player);
return $playerId;
}
public function getPlayerByID($id)
{
$playerDataArray = $this->gwPlayer->getPlayerByID($id);

@ -15,20 +15,48 @@
<h2 class="card-title">Connexion</h2>
<form action="/login/verifyPlayer" method="post">
<div class="mb-3">
<label for="username" class="form-label">Nom d'utilisateur</label>
<input type="text" class="form-control" id="username" name="username" required>
<label for="nickname" class="form-label">Nom d'utilisateur</label>
<input type="text" class="form-control" id="nickname" name="nickname" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Mot de passe</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<button type="submit" class="btn btn-primary">Se connecter</button>
<a href="/user/player/add">S'inscrire</a>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalPlayers">S'inscrire</button>
<p>{{error}}</p>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<div class="modal fade" id="modalPlayers">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Créer son compte</h5>
</div>
<form method="POST" action="/user/players/add">
<div class="modal-body">
<div class="form-group">
<label for="nickname">Nom d'utilisateur :</label>
<input type="text" class="form-control" id="nickname" name="nickname">
</div>
<div class="form-group">
<label for="password">Mot de passe :</label>
<input type="password" class="form-control" id="password" name="password">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
<button type="submit" class="btn btn-primary">Enregistrer</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>

@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Maths Educ</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script>
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<div class="modal fade" id="modalUpdateAdministrators">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modifier un administrateur</h5>
</div>
<form method="POST" action="/admin/administrators/update">
<div class="modal-body">
<div class="form-group">
<input type="hidden" class="form-control" id="updateId" name="id">
</div>
<div class="form-group">
<label for="username">Nom d'utilisateur :</label>
<input type="text" class="form-control" id="updateUsername" name="username">
</div>
<div class="form-group">
<label for="password">Mot de passe :</label>
<input type="password" class="form-control" id="updatePassword" name="password">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
<button type="submit" class="btn btn-primary">Enregistrer</button>
</div>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
if ({{ administrator.id }} != 0) {
window.onload = showModal();
function showModal() {
var modal = new bootstrap.Modal(document.getElementById('modalUpdateAdministrators'));
var id = document.getElementById('updateId');
var username = document.getElementById('updateUsername');
var password = document.getElementById('updatePassword');
id.value = "{{ administrator.id }}";
username.value = "{{ administrator.username }}";
password.value = "{{ administrator.hashedPassword }}";
modal.show();
}
}
</script>
</body>
</html>

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset=utf-8>
<title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="/css/global.css">
</head>
<body id="bodyStyle">
<div class="container mt-5">
<div>
<p>test</p>
</div>
</body>
</html>

@ -10,6 +10,7 @@ $vues["home"]="home.twig";
$vues["connexion"]="connexion.twig";
$vues["themeChoice"]="themeChoice.twig";
$vues["loginAdmin"]="loginAdmin.twig";
$vues["loginPlayer"]="loginPlayer.twig";
$vues["adminAdministrators"]="adminAdministrators.twig";
$vues["adminAdministratorsModal"]="adminAdministratorsModal.twig";
$vues["adminChapters"]="adminChapters.twig";
@ -17,4 +18,4 @@ $vues["adminChaptersModal"]="adminChaptersModal.twig";
$vues["adminQuestions"]="adminQuestions.twig";
$vues["adminQuestionsModal"]="adminQuestionsModal.twig";
$vues["viewScore"]="viewScore.twig";
$vues["lobby"]="lobby.twig";
$vues["userStatus"]="userStatus.twig";
Loading…
Cancel
Save