Ajout de webhooks pour le login/register/newEvent.

Ajout des pages pour gestion globale des évènements.

Co-authored-by: Charpentier Juliette <juliette.charpentier@etu.u-pec.fr>
This commit is contained in:
2024-06-14 17:31:37 +02:00
parent 7c326d3908
commit 9adca94b82
21 changed files with 8471 additions and 346 deletions

View File

@@ -36,7 +36,7 @@ if (isset($_COOKIE['userData'])) {
<img src="https://cdn-icons-png.flaticon.com/512/4139/4139948.png" alt="Avatar">
<h2 class="login-title">Connexion à votre compte</h2>
<p class="login-subtitle">Connectez-vous afin d'accéder à l'entièreté du site.</p>
<form action="/account/login/login.php" method="post">
<form class="form" action="/account/login/login.php" method="post">
<div class="form-group">
<label for="email">Adresse mail</label>
<input type="email" id="email" name="email" placeholder="username@example.com" required placeholder=" ">
@@ -45,9 +45,13 @@ if (isset($_COOKIE['userData'])) {
<label for="password">Mot de passe</label>
<input type="password" id="password" name="password" required placeholder="••••••••" placeholder=" ">
</div>
<div class="form-group forgot-password">
</div>
<?php
if (isset($_GET['res'])) {
if ($_GET['res'] == "login-failed") {
echo "<p class='text' style='color:red; padding-left:0; padding-right:0; width:fit-content;'>⛔ Adresse mail ou mot de passe incorrect.</p>";
}
}
?>
<button type="submit" class="submit-button"><i class="fas fa-sign-in-alt"></i>
Connexion</i></button>
</form>

View File

@@ -1,93 +1,59 @@
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = htmlspecialchars($_POST["email"]);
$password = htmlspecialchars($_POST["password"]);
}
/*
hasher le mdp
- check la validité du combo mail + mdp (qui es thashé sur la bdd)
- si valide, on enregistre un cookie avec mail, nom, prénom, rôle (requete sql pour les obtenir)
- créer un cookie avec mail, nom, prénom, rôle. Qui expire dans 1h
une fois bien connecté, on redirige vers /account/profile
*/
?>
<?php
if (isset($_COOKIE['userData'])) {
header("Location: /account/profile");
}
$hashedPassword = sha1($password);
$resultat = mysqli_query($db, "SELECT *
FROM user
WHERE mail = '$email' AND password = '$hashedPassword'");
$stmt = mysqli_prepare($db, "SELECT * FROM user WHERE mail = ? AND password = ?");
mysqli_stmt_bind_param($stmt, 'ss', $email, $hashedPassword);
$result = mysqli_stmt_execute($stmt);
$result = $stmt->get_result();
$query = "SELECT mail, password
FROM user
WHERE mail = '$email'";
$result = mysqli_query($db, $query);
if (!$result) {
die("Erreur lors de l'exécution de la requête.");
}
if (!$password) {
die("Combinaison email/mot de passe incorrecte.");
}
if (!$email) {
die("Combinaison email/mot de passe incorrecte.");
die('Erreur de requête : ' . mysqli_error($db));
} else {
echo "<p>Connexion réussie</p>";
// Requête pour récupérer les informations de l'utilisateur
$query = "SELECT name, family_name, role FROM user WHERE mail = '$email'";
$result = mysqli_query($db, $query);
if (!$result) {
die('Erreur de requête : ' . mysqli_error($db));
}
// Récupération des données
if ($row = mysqli_fetch_assoc($result)) {
$nameFetched = $row['name'];
$familyNameFetched = $row['family_name'];
$roleFetched = $row['role'];
if (mysqli_num_rows($result) == 0) {
header("Location: /account/login?res=login-failed");
die();
} else {
echo "Aucun utilisateur trouvé avec cet email.";
// Requête pour récupérer les informations de l'utilisateur
$query = "SELECT name, family_name, role FROM user WHERE mail = '$email'";
$result = mysqli_query($db, $query);
if (!$result) {
die('Erreur de requête : ' . mysqli_error($db));
}
// Récupération des données
if ($row = mysqli_fetch_assoc($result)) {
$nameFetched = $row['name'];
$familyNameFetched = $row['family_name'];
$roleFetched = $row['role'];
} else {
echo "Aucun utilisateur trouvé avec cet email.";
}
// Mise en forme dans un format .JSON et création du cookie.
$userData = array(
"email" => $email,
"name" => $nameFetched,
"familyName" => $familyNameFetched,
"role" => $roleFetched
);
$userDataEncoded = json_encode($userData);
setcookie("userData", $userDataEncoded, time() + 3600, "/");
// Utilistation d'un Webhook Discord pour notifier l'administrateur de la
//connexion des utilisateurs [fork de : https://stackoverflow.com/a/73547248]
include ($_SERVER['DOCUMENT_ROOT'] . '/views/discordWebhookLogin.php');
header("Location: /?res=login-succeeded");
die();
}
$userData = array(
"email" => $email,
"name" => $nameFetched,
"familyName" => $familyNameFetched,
"role" => $roleFetched
);
$userDataEncoded = json_encode($userData);
setcookie("userData", $userDataEncoded, time() + 3600, "/");
if (isset($_COOKIE['userData'])) {
$userDataEncoded = $_COOKIE['userData'];
$userData = json_decode($userDataEncoded, true); // 'true' pour obtenir un tableau associatif
echo "Email : " . $userData['email'] . "<br>";
echo "Prénom : " . $userData['name'] . "<br>";
echo "Nom : " . $userData['familyName'] . "<br>";
echo "Rôle : " . $userData['role'] . "<br>";
} else {
echo "Cookie 'userData' non trouvé.";
}
}
$newURL = "/";
header("Location: " . $newURL);
die();
?>

View File

@@ -9,109 +9,81 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
- enregistrer le nouvel utilisateur dans la bdd
- créer un cookie avec mail, nom, prénom, rôle. Qui expire dans 1h
*/
?>
include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST["name"]);
$familyName = htmlspecialchars($_POST["family_name"]);
$email = htmlspecialchars($_POST["email"]);
$password = htmlspecialchars($_POST["password"]);
$codeRole = htmlspecialchars($_POST["code-role"]);
}
$hashedPassword = sha1($password);
<!DOCTYPE html>
<html lang="fr">
$query = "SELECT mail FROM user WHERE mail = '$email'";
$result = mysqli_query($db, $query);
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../../styles/main.css" />
<link rel="stylesheet" href="../../styles/header.css" />
<link rel="stylesheet" href="../../styles/footer.css" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
if (!$result) {
die("Erreur lors de l'exécution de la requête.");
}
<link rel="icon" type="image/png" sizes="32x32"
href="https://tickets.paris2024.org/obj/media/FR-Paris2024/specialLogos/favicons/favicon-32x32.png" />
<script src="https://kit.fontawesome.com/f16a36bad3.js" crossorigin="anonymous"></script>
<title>Jeux Olympiques - Paris 2024</title>
</head>
$row = mysqli_fetch_assoc($result);
<body>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php');
if ($row) {
die("<p>Un utilisateur avec cette adresse mail existe déjà.</p>");
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST["name"]);
$familyName = htmlspecialchars($_POST["family_name"]);
$email = htmlspecialchars($_POST["email"]);
$password = htmlspecialchars($_POST["password"]);
$codeRole = htmlspecialchars($_POST["code-role"]);
}
if ($codeRole == "M25QP") {
$role = "Administrateur";
} else if ($codeRole == "TF53K") {
$role = "Sportif";
} else if ($codeRole == "VJC6V") {
$role = "Organisateur";
} else {
$role = "Spectateur";
}
$hashedPassword = sha1($password);
$addUser = "INSERT INTO `user`(`mail`, `name`, `family_name`, `role`, `password`) VALUES ('$email', '$name', '$familyName', '$role', '$hashedPassword')";
$query = "SELECT mail FROM user WHERE mail = '$email'";
$result = mysqli_query($db, $query);
$resultAddUser = mysqli_query($db, $addUser);
if (!$resultAddUser) {
echo "<p class='text'>Erreur lors de l'exécution de la requête.</p>";
} else {
if (mysqli_affected_rows($db) > 0) {
echo "<p class='text'>Utilisateur créé avec succès. </p>";
if (!$result) {
die("Erreur lors de l'exécution de la requête.");
}
// Créer un tableau avec les données utilisateur
$userData = array(
"email" => $email,
"name" => $name,
"familyName" => $familyName,
"role" => $role,
);
// Sérialiser le tableau en JSON
$userDataEncoded = json_encode($userData);
// Stocker les données sérialisées dans un cookie
setcookie("userData", $userDataEncoded, time() + 3600, "/");
$row = mysqli_fetch_assoc($result);
echo "<p class='text'>Cookie créé avec succès. Contenu du cookie :</p>";
echo "<p class='text'>" . $userDataEncoded . "</p>";
if ($row) {
die("<p>Un utilisateur avec cette adresse mail existe déjà.</p>");
}
if ($codeRole == "M25QP") {
$role = "Administrateur";
} else if ($codeRole == "TF53K") {
$role = "Sportif";
} else if ($codeRole == "VJC6V") {
$role = "Organisateur";
} else if ($codeRole == "XJ9LQ") {
$role = "Spectateur";
echo "<p class='text'>Prénom : " . $name . "</p>";
echo "<p class='text'>Nom : " . $familyName . "</p>";
echo "<p class='text'>Adresse mail : " . $email . "</p>";
echo "<p class='text'>Mot de passe : " . $password . "</p>";
echo "<p class='text'>Mot de passe hashé : " . $hashedPassword . "</p>";
echo "<p class='text'>Rôle : " . $role . "</p>";
include ($_SERVER['DOCUMENT_ROOT'] . '/views/discordWebhookRegister.php');
header("Location: /?res=login-succeeded");
die();
} else {
$role = "Membre";
}
$addUser = "INSERT INTO `user`(`mail`, `name`, `family_name`, `role`, `password`) VALUES ('$email', '$name', '$familyName', '$role', '$hashedPassword')";
$resultAddUser = mysqli_query($db, $addUser);
if (!$resultAddUser) {
echo "<p class='text'>Erreur lors de l'exécution de la requête.</p>";
} else {
if (mysqli_affected_rows($db) > 0) {
echo "<p class='text'>Utilisateur créé avec succès. </p>";
// Créer un tableau avec les données utilisateur
$userData = array(
"email" => $email,
"name" => $name,
"familyName" => $familyName,
"role" => $role,
);
// Sérialiser le tableau en JSON
$userDataEncoded = json_encode($userData);
// Stocker les données sérialisées dans un cookie
setcookie("userData", $userDataEncoded, time() + 3600, "/");
echo "<p class='text'>Cookie créé avec succès. Contenu du cookie :</p>";
echo "<p class='text'>" . $userDataEncoded . "</p>";
echo "<p class='text'>Prénom : " . $name . "</p>";
echo "<p class='text'>Nom : " . $familyName . "</p>";
echo "<p class='text'>Adresse mail : " . $email . "</p>";
echo "<p class='text'>Mot de passe : " . $password . "</p>";
echo "<p class='text'>Mot de passe hashé : " . $hashedPassword . "</p>";
echo "<p class='text'>Rôle : " . $role . "</p>";
?>
<script type="text/javascript">
window.location.href = '/';
</script> <?php
} else {
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";
}
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";
}
}
include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php');
?>
</body>
</html>
include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php');
?>