feat: add user to OU

This commit is contained in:
Morph01
2025-02-02 14:07:03 -08:00
parent 3da66d6bed
commit 9bac52bc37
3 changed files with 82 additions and 10 deletions

65
controllers/add_user.php Normal file
View File

@@ -0,0 +1,65 @@
<?php
session_start();
// Vérifier si l'utilisateur est connecté et est administrateur
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
header("Location: ../index.php");
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Récupérer les données du formulaire
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$password = $_POST['password'];
$role = $_POST['role'];
$ou_dn = $_POST['ou']; // DN de l'OU sélectionnée
// Valider les données (exemple simplifié)
if (empty($nom) || empty($prenom) || empty($pseudo) || empty($email) || empty($password) || empty($ou_dn)) {
die("Tous les champs sont obligatoires.");
}
// Connexion LDAP
$ldapconn = ldap_connect("ldap://intranet.epul3a.local")
or die("Could not connect to LDAP server.");
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
// Authentification avec le token de session
$token = base64_decode($_SESSION['ldap_token']);
list($ldap_user, $ldap_password) = explode(':', $token);
$ldap_user = "CN=$ldap_user,CN=Users,DC=epul3a,DC=local";
if (!@ldap_bind($ldapconn, $ldap_user, $ldap_password)) {
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
}
$samAccountName = strtolower(substr($prenom, 0, 1) . $nom); // Générer le samAccountName
// Créer l'utilisateur dans l'OU sélectionnée
$user_dn = "CN=$pseudo,$ou_dn"; // DN du nouvel utilisateur
$user_info = [
'cn' => $pseudo,
'sn' => $nom,
'givenName' => $prenom,
'mail' => $email,
'userPassword' => $password,
'samAccountName' => $samAccountName,
'objectClass' => ['top', 'person', 'organizationalPerson', 'user']
];
// Ajout de l'utilisateur
if (@ldap_add($ldapconn, $user_dn, $user_info)) {
echo "Utilisateur créé avec succès dans l'OU : $ou_dn";
} else {
echo "Erreur lors de la création de l'utilisateur : " . ldap_error($ldapconn);
}
ldap_close($ldapconn);
}

View File

@@ -39,22 +39,20 @@ function listAllOU()
$result = @ldap_search($ldapconn, $searchBase, $filter, $attributes);
$ous = [];
if ($result) {
$entries = ldap_get_entries($ldapconn, $result);
echo "<h3>Liste des OUs:</h3>";
if ($entries['count'] > 0) {
foreach ($entries as $key => $entry) {
if (is_numeric($key)) {
echo "OU: " . $entry['ou'][0] . "<br>";
echo "DN: " . $entry['distinguishedname'][0] . "<br><br>";
$ous[] = $entry; // Ajouter chaque OU au tableau
}
}
} else {
echo "Aucune OU trouvée.";
}
} else {
echo "Error: " . ldap_error($ldapconn);
}
ldap_close($ldapconn);
return $ous; // Retourner le tableau des OUs
}

View File

@@ -16,18 +16,27 @@ $password = isset($_POST['password']) ? $_POST['password'] : '';
// Display form
echo "<h2>Création d'un utilisateur</h2>";
echo "<form method=post>";
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>";
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>";
}
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>";
require_once 'controllerAdmin.php';
listAllOU();
echo "<input type='submit' value='Créer'>";
echo "</form>";