Compare commits
2
Commits
774ecbb5a8
...
f58d981ddc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f58d981ddc | ||
|
|
9a1fbf1252 |
@@ -13,6 +13,7 @@
|
|||||||
<div class="footer-links">
|
<div class="footer-links">
|
||||||
<a href="https://www.linkedin.com/in/estebanmoussu/" target="_blank" rel="noopener noreferrer">LinkedIn</a>
|
<a href="https://www.linkedin.com/in/estebanmoussu/" target="_blank" rel="noopener noreferrer">LinkedIn</a>
|
||||||
<a href="https://www.instagram.com/ours_one_" target="_blank" rel="noopener noreferrer">Instagram</a>
|
<a href="https://www.instagram.com/ours_one_" target="_blank" rel="noopener noreferrer">Instagram</a>
|
||||||
|
<a href="https://git.eldorianet.work/esteban" target="_blank" rel="noopener noreferrer">Git</a>
|
||||||
<span class="discord-handle" title="@ours1" onclick="alert('Discord : @ours1')">Discord</span>
|
<span class="discord-handle" title="@ours1" onclick="alert('Discord : @ours1')">Discord</span>
|
||||||
<a href="../pages/cgu.php">Conditions générales / Utilisations</a>
|
<a href="../pages/cgu.php">Conditions générales / Utilisations</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
// Ajout ici d'un démarrage de session : header étant dans toutes les pages
|
// Ajout ici d'un démarrage de session : header étant dans toutes les pages
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
// Ajout des logs sur toutes les pages
|
||||||
|
require_once('../functions/sendLogs.php');
|
||||||
|
|
||||||
// Ajout du CSS Primaire (fait par IA)
|
// Ajout du CSS Primaire (fait par IA)
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
// Fonction qui va AFFICHER les utilisateurs présent dans la bdd
|
||||||
|
function afficherUsersAdmin()
|
||||||
|
{
|
||||||
|
require("../functions/databaseConnection.php");
|
||||||
|
// Requête pour recuperer tous les utilisateurs
|
||||||
|
$sql = "SELECT * FROM users ORDER BY id DESC";
|
||||||
|
$requete = $dbh->query($sql);
|
||||||
|
$users = $requete->fetchAll();
|
||||||
|
// Affichage
|
||||||
|
echo '<div class="projects-list">';
|
||||||
|
|
||||||
|
if ($users) {
|
||||||
|
foreach ($users as $user) {
|
||||||
|
echo '<div class="project-card">';
|
||||||
|
echo '<div class="project-content">';
|
||||||
|
echo '<h2>' . htmlspecialchars($user["username"]) . '</h2>';
|
||||||
|
echo '<p><strong>Rôle :</strong> ' . htmlspecialchars($user["role"]) . '</p>';
|
||||||
|
echo '<p><strong>Créé le :</strong> ' . htmlspecialchars($user["created_at"]) . '</p>';
|
||||||
|
|
||||||
|
echo '<div class="admin-actions">';
|
||||||
|
echo '<a href="../scripts/removeUser.php?id=' . $user["id"] . '" class="btn-submit btn-delete" onclick="return confirm(\'Supprimer cet utilisateur ?\')">Supprimer</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
echo '</div>';
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
// Cas improbable mais on sait jamais (vu que il faut être admin et donc avoir un compte pour accéder à ici), si aucun utilisateur est trouvé, alors l'afficher
|
||||||
|
} else {
|
||||||
|
echo '<p style="padding: 0 40px 40px 40px; color: #aaaaaa;">Aucun utilisateur trouvé.</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Fonction qui va ENVOYER des logs sur le webhook discord
|
||||||
|
function sendLog($action, $user="") {
|
||||||
|
$webhook = "https://discord.com/api/webhooks/1513460601056264242/JzPzMzbxWSGDzL-5Gfqa6tkzzaW74ZV9026-nSraOHS_dQF_YD1-N4S6M6IUv_kKoNhn";
|
||||||
|
$contenuLog = "**Nouvelle log du portfolio**\n\n";
|
||||||
|
$contenuLog .= "**Action :** " . $action . "\n";
|
||||||
|
if ($user != "") {
|
||||||
|
$contenuLog .= "**Utilisateur :** " . $user . "\n";
|
||||||
|
} else {
|
||||||
|
$contenuLog .= "**Utilisateur :** non défini". "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"content" => $contenuLog
|
||||||
|
];
|
||||||
|
|
||||||
|
$dataJson = json_encode($data);
|
||||||
|
|
||||||
|
$ch = curl_init($webhook); // On démarre une ressource curl
|
||||||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
|
||||||
|
curl_setopt($ch, CURLOPT_POST, 1);
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataJson);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
}
|
||||||
+33
-1
@@ -4,7 +4,7 @@ require_once('./../elements/header.php');
|
|||||||
|
|
||||||
// Ajout de la base de donnée
|
// Ajout de la base de donnée
|
||||||
require_once '../functions/databaseConnection.php';
|
require_once '../functions/databaseConnection.php';
|
||||||
|
require_once("../functions/listUser.php");
|
||||||
require_once('../functions/listProject.php');
|
require_once('../functions/listProject.php');
|
||||||
require_once('../functions/listXP.php');
|
require_once('../functions/listXP.php');
|
||||||
|
|
||||||
@@ -115,4 +115,36 @@ if (isset($_GET['edit_xp']) && is_numeric($_GET['edit_xp'])) {
|
|||||||
<h2 class="projects-title">Gérer les experiences</h2>
|
<h2 class="projects-title">Gérer les experiences</h2>
|
||||||
<?php afficherXPAdmin();
|
<?php afficherXPAdmin();
|
||||||
|
|
||||||
|
// Création de compte
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- Formulaire de création de compte -->
|
||||||
|
<div class="project-container">
|
||||||
|
<div class="project-form-card">
|
||||||
|
<div class="project-header">
|
||||||
|
<h2>Nouveau compte</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- en envoie les données addUser.php -->
|
||||||
|
<form method="POST" action="../scripts/addUser.php">
|
||||||
|
<label>Nom du compte</label>
|
||||||
|
<input type="text" name="user" required>
|
||||||
|
|
||||||
|
<!-- role admin ou user -->
|
||||||
|
<label>Rôle</label>
|
||||||
|
<textarea name="role" required></textarea>
|
||||||
|
|
||||||
|
<label>Mot de passe</label>
|
||||||
|
<textarea name="passwd" required></textarea>
|
||||||
|
|
||||||
|
<!-- Le bouton qui déclenche le PHP en haut de page -->
|
||||||
|
<input type="submit" name="submituser" value="Ajouter l'utilisateur" class="btn-submit">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 class="projects-title">Gérer les utilisateurs</h2>
|
||||||
|
|
||||||
|
<?php afficherUsersAdmin();
|
||||||
|
|
||||||
require_once('../elements/footer.php'); ?>
|
require_once('../elements/footer.php'); ?>
|
||||||
+8
-1
@@ -6,5 +6,12 @@
|
|||||||
// Insertion du header
|
// Insertion du header
|
||||||
require_once('./../elements/header.php');
|
require_once('./../elements/header.php');
|
||||||
|
|
||||||
|
// Ajout d'un texte pour rappeller aux utilisateurs de la démo de vider le cache si du CSS s'affiche mal
|
||||||
|
?>
|
||||||
|
<p> Si du CSS / ou des images s'affichent mal, il faut penser à vider le cache, version de développement uniquement.</p>
|
||||||
|
|
||||||
|
<?php
|
||||||
// Ajout du footer
|
// Ajout du footer
|
||||||
require_once('../elements/footer.php'); ?>
|
require_once('../elements/footer.php');
|
||||||
|
|
||||||
|
?>
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
// Démarrage de la session pour vérifier les droits de l'utilisateur
|
||||||
|
session_start();
|
||||||
|
// Ajout de connexion à la BDD
|
||||||
|
require_once("../functions/databaseConnection.php");
|
||||||
|
|
||||||
|
// Vérification que l'utilisateur est bien admin
|
||||||
|
if (!isset($_SESSION["role"]) || $_SESSION["role"] != "admin") {
|
||||||
|
header("Location: ../pages/home.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si le formulaire a été soumis
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
// Récupération des données du formulaire
|
||||||
|
$user = $_POST["user"];
|
||||||
|
$role = $_POST["role"];
|
||||||
|
$passwd = $_POST["passwd"];
|
||||||
|
|
||||||
|
// Vérification que tous les champs sont remplis
|
||||||
|
if ($user == "" || $role == "" || $passwd == "") {
|
||||||
|
echo "Tous les champs doivent être remplis.";
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
// Vérification que le rôle est valide (admin ou user)
|
||||||
|
if ($role != "admin" && $role != "user") {
|
||||||
|
echo "Le rôle doit être admin ou user.";
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
// Requête SQL pour vérifier si le nom d'utilisateur existe déjà
|
||||||
|
$sqlVerification = "SELECT * FROM users WHERE username = :username";
|
||||||
|
$requeteVerification = $dbh->prepare($sqlVerification);
|
||||||
|
$requeteVerification->execute([
|
||||||
|
":username" => $user
|
||||||
|
]);
|
||||||
|
|
||||||
|
$utilisateurExistant = $requeteVerification->fetch();
|
||||||
|
|
||||||
|
// Si l'utilisateur existe déjà, on affiche une erreur
|
||||||
|
if ($utilisateurExistant) {
|
||||||
|
echo "Ce nom d'utilisateur existe déjà.";
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
// Génération de la date de création
|
||||||
|
$dateCreation = date("Y-m-d H:i:s");
|
||||||
|
|
||||||
|
// Requête SQL d'insertion du nouvel utilisateur
|
||||||
|
$sqlAjout = "INSERT INTO users (username, password, role, created_at) VALUES (:username, :password, :role, :created_at)";
|
||||||
|
$requeteAjout = $dbh->prepare($sqlAjout);
|
||||||
|
$requeteAjout->execute([
|
||||||
|
":username" => $user,
|
||||||
|
":password" => $passwd,
|
||||||
|
":role" => $role,
|
||||||
|
":created_at" => $dateCreation
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Redirection vers la page admin après succès
|
||||||
|
header("Location: ../pages/admin.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
// En cas d'erreur PDO, affichage du message
|
||||||
|
echo "Erreur pendant l'ajout de l'utilisateur : " . $e->getMessage();
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Si la requête n'est pas de type POST, redirection
|
||||||
|
header("Location: ../pages/admin.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
// Démarrage de la session pour vérifier les droits de l'utilisateur
|
||||||
|
session_start();
|
||||||
|
// Ajout de connexion à la BDD
|
||||||
|
require_once("../functions/databaseConnection.php");
|
||||||
|
|
||||||
|
// Vérification que l'utilisateur est bien admin
|
||||||
|
if (!isset($_SESSION["role"]) || $_SESSION["role"] != "admin") {
|
||||||
|
header("Location: ../pages/home.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupération de l'ID passé en paramètre GET
|
||||||
|
$id = $_GET["id"];
|
||||||
|
|
||||||
|
// Vérification que l'ID n'est pas vide
|
||||||
|
if ($id == "") {
|
||||||
|
echo "ID manquant.";
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
// Requête SQL de suppression de l'utilisateur
|
||||||
|
$sql = "DELETE FROM users WHERE id = :id";
|
||||||
|
$requete = $dbh->prepare($sql);
|
||||||
|
$requete->execute([
|
||||||
|
":id" => $id
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Redirection vers la page admin après suppression
|
||||||
|
header("Location: ../pages/admin.php");
|
||||||
|
exit();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
// En cas d'erreur PDO, affichage du message
|
||||||
|
echo "Erreur pendant la suppression : " . $e->getMessage();
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user