Files
2026-07-03 02:02:13 +02:00

85 lines
3.3 KiB
PHP

<?php
// Démarrage de la session pour vérifier les droits de l'utilisateur
require_once(__DIR__ . '/../functions/security.php');
// Ajout de connexion à la BDD
require_once("../functions/databaseConnection.php");
// Ajout des logs Discord
require_once("../functions/sendLogs.php");
// Vérification que l'utilisateur est bien admin
if (!isset($_SESSION["role"]) || $_SESSION["role"] != "admin") {
header("Location: ../pages/home.php");
exit();
}
// Vérification du jeton CSRF : bloque les requêtes forgées depuis un autre site
requireCsrfToken();
// Si le formulaire a été soumis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Récupération des données du formulaire
$user = trim($_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 LIMIT 1";
$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");
// Hashage du mot de passe
$passwordHash = password_hash($passwd, PASSWORD_DEFAULT);
// 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" => $passwordHash,
":role" => $role,
":created_at" => $dateCreation
]);
// Log Discord
sendLog("Création du compte : " . $user . " (rôle : " . $role . ")");
// 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();
}
?>