Compare commits

...
2 Commits
8 changed files with 216 additions and 2 deletions
+1
View File
@@ -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>
+2
View File
@@ -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)
?> ?>
+35
View File
@@ -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>';
}
?>
+25
View File
@@ -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
View File
@@ -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
View File
@@ -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');
?>
+74
View File
@@ -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();
}
?>
+38
View File
@@ -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();
}
}
?>