feat: implement user creation, editing, and deletion functionality ALL features are working

This commit is contained in:
Morph01
2025-02-04 16:35:30 -08:00
parent 2baa69fe34
commit e3243dd018
11 changed files with 330 additions and 296 deletions

View File

@@ -1,42 +1,45 @@
<?php
session_start();
require_once __DIR__ . '/../models/LDAPAuth.php';
// Check if user is logged in and is admin
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// Vérifier les permissions
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
header("Location: ../index.php");
header('Location: ../auth.php');
exit;
}
// Initialize form variables
$nom = isset($_POST['nom']) ? $_POST['nom'] : '';
$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
// Récupérer les données de la session et du formulaire
$admin_username = $_SESSION['sAMAccountName']; // sAMAccountName de l'admin connecté
$ou_dn = $_POST['ou_dn']; // OU cible pour la création
// Display form
echo "<h2>Création d'un utilisateur</h2>";
echo "<form method=post action='add_user.php'>";
echo "Nom <input type=text name=nom value='$nom' required><br>";
echo "Prénom <input type=text name=prenom value='$prenom' required><br>";
echo "Nom d'utilisateur <input type=text name=pseudo value='$pseudo' required><br>";
echo "E-Mail <input type=text name=email value='$email' required><br>";
echo "Mot de passe <input type=password name=password value='$password' required><br>";
// Récupérer les attributs du nouvel utilisateur depuis le formulaire
$entry = [
'objectClass' => ['top', 'person', 'organizationalPerson', 'user'],
'cn' => $_POST['username'],
'givenName' => $_POST['firstname'],
'sn' => $_POST['lastname'],
'mail' => $_POST['email'],
'userPassword' => $_POST['password'],
'sAMAccountName' => $_POST['username'],
];
echo "Choisir une OU <select name='ou' required>";
require_once 'controllerAdmin.php';
$ous = listAllOU(); // Récupérer la liste des OUs
foreach ($ous as $ou) {
$dn = $ou['distinguishedname'][0];
$name = $ou['ou'][0];
echo "<option value='$dn'>$name</option>";
// Vérifier que l'admin a les droits sur l'OU cible
$ldapAuth = new LDAPAuth();
if (!in_array($ou_dn, $_SESSION['admin_ous'])) {
die("Accès non autorisé");
}
echo "</select><br>";
echo "Rôle dans l'OU <select name=role>";
echo "<option value='user'>Utilisateur standard</option>";
echo "<option value='admin'>Administrateur</option>";
echo "</select><br>";
echo "<input type='submit' value='Créer'>";
echo "</form>";
// Tenter la création
try {
$user_dn = "CN=" . $_POST['username'] . "," . $ou_dn;
if ($ldapAuth->addUserWithAdminAuth($user_dn, $entry, $admin_username, $_SESSION['password'])) {
header("Location: ../views/list_users.php?ou=" . urlencode($ou_dn));
} else {
die("Erreur lors de la création.");
}
} catch (Exception $e) {
die("Erreur : " . $e->getMessage());
}