85 lines
3.3 KiB
PHP
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();
|
|
}
|
|
?>
|