98 lines
3.3 KiB
PHP
98 lines
3.3 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
|
header('Location: ../auth.php');
|
|
exit;
|
|
}
|
|
|
|
require_once __DIR__ . '/../models/LDAPAuth.php';
|
|
$ldapAuth = new LDAPAuth();
|
|
|
|
// Récupérer les OUs administrées
|
|
$allowed_ous = $_SESSION['admin_ous'];
|
|
|
|
// Si une OU est spécifiée dans l'URL, on la pré-sélectionne
|
|
$default_ou = null;
|
|
if (isset($_GET['ou'])) {
|
|
$default_ou = urldecode($_GET['ou']);
|
|
if (!in_array($default_ou, $allowed_ous)) {
|
|
die("Accès non autorisé à cette OU.");
|
|
}
|
|
}
|
|
|
|
// Traitement du formulaire
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$nom = $_POST['nom'];
|
|
$prenom = $_POST['prenom'];
|
|
$pseudo = $_POST['pseudo'];
|
|
$email = $_POST['email'];
|
|
$password = $_POST['password'];
|
|
$role = $_POST['role'];
|
|
$ou_dn = $_POST['ou'];
|
|
|
|
// Validation des données
|
|
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("Impossible de se connecter au serveur LDAP.");
|
|
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
|
|
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
|
|
|
|
if (!@ldap_bind($ldapconn, $_SESSION['dn'], $_SESSION['password'])) {
|
|
die("Erreur de connexion LDAP : " . ldap_error($ldapconn));
|
|
}
|
|
|
|
// Création de l'utilisateur
|
|
$user_dn = "CN=$pseudo,$ou_dn";
|
|
$user_info = [
|
|
'cn' => $pseudo,
|
|
'sn' => $nom,
|
|
'givenName' => $prenom,
|
|
'mail' => $email,
|
|
'userPassword' => $password,
|
|
'objectClass' => ['top', 'person', 'organizationalPerson', 'user']
|
|
];
|
|
|
|
if (@ldap_add($ldapconn, $user_dn, $user_info)) {
|
|
echo "<p>Utilisateur créé avec succès dans l'OU : $ou_dn</p>";
|
|
} else {
|
|
echo "<p>Erreur lors de la création de l'utilisateur : " . ldap_error($ldapconn) . "</p>";
|
|
}
|
|
|
|
ldap_close($ldapconn);
|
|
} else {
|
|
// Affichage du formulaire
|
|
echo "<h1>Ajouter un utilisateur</h1>";
|
|
echo "<form method='POST'>";
|
|
echo " <label>Nom : <input type='text' name='nom' required></label><br>";
|
|
echo " <label>Prénom : <input type='text' name='prenom' required></label><br>";
|
|
echo " <label>Pseudo : <input type='text' name='pseudo' required></label><br>";
|
|
echo " <label>Email : <input type='email' name='email' required></label><br>";
|
|
echo " <label>Mot de passe : <input type='password' name='password' required></label><br>";
|
|
echo " <label>Rôle :
|
|
<select name='role'>
|
|
<option value='user'>Utilisateur standard</option>
|
|
<option value='admin'>Administrateur de l'OU</option>
|
|
</select>
|
|
</label><br>";
|
|
echo " <label>OU :
|
|
<select name='ou'" . ($default_ou ? " readonly" : "") . ">";
|
|
if ($default_ou) {
|
|
echo "<option value='$default_ou'>$default_ou</option>";
|
|
} else {
|
|
foreach ($allowed_ous as $ou) {
|
|
echo "<option value='$ou'>$ou</option>";
|
|
}
|
|
}
|
|
echo " </select>
|
|
</label><br>";
|
|
echo " <input type='submit' value='Créer l\'utilisateur'>";
|
|
echo "</form>";
|
|
}
|
|
|
|
// Lien de retour
|
|
echo "<p><a href='../views/menu.php'>Retour au menu</a></p>";
|