feat: implement user creation, editing, and deletion functionality ALL features are working
This commit is contained in:
@@ -1,68 +0,0 @@
|
|||||||
<?php
|
|
||||||
session_start();
|
|
||||||
|
|
||||||
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
|
||||||
header("Location: ../index.php");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$ldapAuth = new LDAPAuth();
|
|
||||||
$available_ous = $ldapAuth->getAllOUs();
|
|
||||||
$admin_ous = $_SESSION['admin_ous'] ?? [];
|
|
||||||
|
|
||||||
// Filtrer les OUs disponibles selon les droits de l'admin
|
|
||||||
$allowed_ous = array_intersect($available_ous, $admin_ous);
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
$ldap_user = "CN=" . $_SESSION['sAMAccountName'] . ",CN=Users,DC=epul3a,DC=local";
|
|
||||||
|
|
||||||
if (!@ldap_bind($ldapconn, $ldap_user, $_SESSION['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,
|
|
||||||
// 'userAccountControl' => "544", // Activer le compte
|
|
||||||
'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);
|
|
||||||
}
|
|
||||||
@@ -1,42 +1,45 @@
|
|||||||
<?php
|
<?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"]) {
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
header("Location: ../index.php");
|
header('Location: ../auth.php');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize form variables
|
// Récupérer les données de la session et du formulaire
|
||||||
$nom = isset($_POST['nom']) ? $_POST['nom'] : '';
|
$admin_username = $_SESSION['sAMAccountName']; // sAMAccountName de l'admin connecté
|
||||||
$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
|
$ou_dn = $_POST['ou_dn']; // OU cible pour la création
|
||||||
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
|
|
||||||
$email = isset($_POST['email']) ? $_POST['email'] : '';
|
|
||||||
$password = isset($_POST['password']) ? $_POST['password'] : '';
|
|
||||||
|
|
||||||
// Display form
|
// Récupérer les attributs du nouvel utilisateur depuis le formulaire
|
||||||
echo "<h2>Création d'un utilisateur</h2>";
|
$entry = [
|
||||||
echo "<form method=post action='add_user.php'>";
|
'objectClass' => ['top', 'person', 'organizationalPerson', 'user'],
|
||||||
echo "Nom <input type=text name=nom value='$nom' required><br>";
|
'cn' => $_POST['username'],
|
||||||
echo "Prénom <input type=text name=prenom value='$prenom' required><br>";
|
'givenName' => $_POST['firstname'],
|
||||||
echo "Nom d'utilisateur <input type=text name=pseudo value='$pseudo' required><br>";
|
'sn' => $_POST['lastname'],
|
||||||
echo "E-Mail <input type=text name=email value='$email' required><br>";
|
'mail' => $_POST['email'],
|
||||||
echo "Mot de passe <input type=password name=password value='$password' required><br>";
|
'userPassword' => $_POST['password'],
|
||||||
|
'sAMAccountName' => $_POST['username'],
|
||||||
|
];
|
||||||
|
|
||||||
echo "Choisir une OU <select name='ou' required>";
|
// Vérifier que l'admin a les droits sur l'OU cible
|
||||||
require_once 'controllerAdmin.php';
|
$ldapAuth = new LDAPAuth();
|
||||||
$ous = listAllOU(); // Récupérer la liste des OUs
|
if (!in_array($ou_dn, $_SESSION['admin_ous'])) {
|
||||||
foreach ($ous as $ou) {
|
die("Accès non autorisé");
|
||||||
$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>";
|
// Tenter la création
|
||||||
echo "<option value='user'>Utilisateur standard</option>";
|
try {
|
||||||
echo "<option value='admin'>Administrateur</option>";
|
$user_dn = "CN=" . $_POST['username'] . "," . $ou_dn;
|
||||||
echo "</select><br>";
|
if ($ldapAuth->addUserWithAdminAuth($user_dn, $entry, $admin_username, $_SESSION['password'])) {
|
||||||
|
header("Location: ../views/list_users.php?ou=" . urlencode($ou_dn));
|
||||||
echo "<input type='submit' value='Créer'>";
|
} else {
|
||||||
echo "</form>";
|
die("Erreur lors de la création.");
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
die("Erreur : " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|||||||
35
controllers/delete_user.php
Normal file
35
controllers/delete_user.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/../models/LDAPAuth.php';
|
||||||
|
|
||||||
|
if (session_status() == PHP_SESSION_NONE) {
|
||||||
|
session_start();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier les permissions
|
||||||
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
|
header('Location: ../auth.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupérer les données de la session et du formulaire
|
||||||
|
$admin_username = $_SESSION['sAMAccountName']; // sAMAccountName de l'admin connecté
|
||||||
|
$user_dn = urldecode($_GET['dn']); // DN de l'utilisateur à supprimer
|
||||||
|
|
||||||
|
// Vérifier que l'admin a les droits sur l'OU de l'utilisateur
|
||||||
|
$ldapAuth = new LDAPAuth();
|
||||||
|
$user_ou = $ldapAuth->getUserOUFromDN($user_dn);
|
||||||
|
|
||||||
|
if ($user_ou === null || !in_array($user_ou, $_SESSION['admin_ous'])) {
|
||||||
|
die("Accès non autorisé");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tenter la suppression
|
||||||
|
try {
|
||||||
|
if ($ldapAuth->deleteUserWithAdminAuth($user_dn, $admin_username, $_SESSION['password'])) {
|
||||||
|
header("Location: ../views/list_users.php?ou=" . urlencode($user_ou));
|
||||||
|
} else {
|
||||||
|
die("Erreur lors de la suppression.");
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
die("Erreur : " . $e->getMessage());
|
||||||
|
}
|
||||||
50
controllers/edit_user.php
Normal file
50
controllers/edit_user.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
|
header('Location: auth.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../models/LDAPAuth.php';
|
||||||
|
|
||||||
|
// Utiliser $_POST au lieu de $_GET pour récupérer le DN
|
||||||
|
$user_dn = isset($_POST['dn']) ? urldecode($_POST['dn']) : '';
|
||||||
|
|
||||||
|
if (empty($user_dn)) {
|
||||||
|
die("DN de l'utilisateur manquant.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construction du tableau des attributs en filtrant les valeurs vides et en forçant un format tableau
|
||||||
|
$attributes = [];
|
||||||
|
|
||||||
|
if (!empty($_POST['firstname'])) {
|
||||||
|
$attributes['givenName'] = [$_POST['firstname']];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($_POST['lastname'])) {
|
||||||
|
$attributes['sn'] = [$_POST['lastname']];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($_POST['email'])) {
|
||||||
|
$attributes['mail'] = [$_POST['email']];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($_POST['new_password'])) {
|
||||||
|
$attributes['userPassword'] = [$_POST['new_password']];
|
||||||
|
}
|
||||||
|
|
||||||
|
$ldapAuth = new LDAPAuth();
|
||||||
|
$user_ou = $ldapAuth->getUserOUFromDN($user_dn);
|
||||||
|
if ($user_ou === null || !in_array($user_ou, $_SESSION['admin_ous'])) {
|
||||||
|
die("Accès non autorisé");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if ($ldapAuth->updateUserWithAdminAuth($user_dn, $attributes, $_SESSION['sAMAccountName'], $_SESSION['password'])) {
|
||||||
|
header("Location: ../views/list_users.php?ou=" . urlencode($user_ou));
|
||||||
|
} else {
|
||||||
|
die("Erreur lors de la modification.");
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
die("Erreur : " . $e->getMessage());
|
||||||
|
}
|
||||||
@@ -359,4 +359,91 @@ class LDAPAuth
|
|||||||
}
|
}
|
||||||
return $clean;
|
return $clean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUserDetailsByDn($dn)
|
||||||
|
{
|
||||||
|
$this->connect();
|
||||||
|
$this->bindServiceAccount();
|
||||||
|
|
||||||
|
$filter = "(objectClass=user)";
|
||||||
|
$attributes = ["givenName", "sn", "mail", "sAMAccountName"];
|
||||||
|
$result = ldap_read($this->ad, $dn, $filter, $attributes);
|
||||||
|
$entries = ldap_get_entries($this->ad, $result);
|
||||||
|
|
||||||
|
return $this->cleanLdapEntries($entries[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateUser($dn, $attributes)
|
||||||
|
{
|
||||||
|
$this->connect();
|
||||||
|
$this->bindServiceAccount();
|
||||||
|
|
||||||
|
return ldap_modify($this->ad, $dn, $attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUserOUFromDN($dn)
|
||||||
|
{
|
||||||
|
// Extraire l'OU ou le conteneur parent
|
||||||
|
$parts = explode(',', $dn);
|
||||||
|
foreach ($parts as $part) {
|
||||||
|
if (strpos($part, 'OU=') === 0) {
|
||||||
|
return $part . ",DC=epul3a,DC=local";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Si l'utilisateur est dans CN=Users, retourner CN=Users
|
||||||
|
if (strpos($dn, 'CN=Users,DC=epul3a,DC=local') !== false) {
|
||||||
|
return "CN=Users,DC=epul3a,DC=local";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAdConnection()
|
||||||
|
{
|
||||||
|
return $this->ad;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Supprime un utilisateur en utilisant les identifiants de l'admin connecté
|
||||||
|
*/
|
||||||
|
public function deleteUserWithAdminAuth($user_dn, $admin_username, $admin_password)
|
||||||
|
{
|
||||||
|
$this->connect();
|
||||||
|
$this->bindWithCredentials($admin_username, $admin_password);
|
||||||
|
|
||||||
|
if (!@ldap_delete($this->ad, $user_dn)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour un utilisateur avec les identifiants de l'admin
|
||||||
|
*/
|
||||||
|
public function updateUserWithAdminAuth($user_dn, $attributes, $admin_username, $admin_password)
|
||||||
|
{
|
||||||
|
$this->connect();
|
||||||
|
$this->bindWithCredentials($admin_username, $admin_password);
|
||||||
|
return ldap_modify($this->ad, $user_dn, $attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajoute un nouvel utilisateur avec les droits de l'admin
|
||||||
|
*/
|
||||||
|
public function addUserWithAdminAuth($dn, $entry, $admin_username, $admin_password)
|
||||||
|
{
|
||||||
|
$this->connect();
|
||||||
|
$this->bindWithCredentials($admin_username, $admin_password);
|
||||||
|
return ldap_add($this->ad, $dn, $entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Méthode générique pour lier la connexion avec des identifiants
|
||||||
|
*/
|
||||||
|
private function bindWithCredentials($username, $password)
|
||||||
|
{
|
||||||
|
$admin_dn = $this->getUserDN($username); // Récupérer le DN de l'admin
|
||||||
|
if (!@ldap_bind($this->ad, $admin_dn, $password)) {
|
||||||
|
throw new Exception("Erreur d'authentification : " . ldap_error($this->ad));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,97 +0,0 @@
|
|||||||
<?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>";
|
|
||||||
46
views/create_user.php
Normal file
46
views/create_user.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
|
header('Location: auth.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Créer un utilisateur</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Créer un nouvel utilisateur</h1>
|
||||||
|
<form action="../controllers/create_user.php" method="post">
|
||||||
|
<label for="ou_dn">OU cible :</label>
|
||||||
|
<select id="ou_dn" name="ou_dn" required>
|
||||||
|
<?php foreach ($_SESSION['admin_ous'] as $ou) : ?>
|
||||||
|
<option value="<?= htmlspecialchars($ou) ?>"><?= htmlspecialchars($ou) ?></option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select><br><br>
|
||||||
|
|
||||||
|
<label for="username">Nom d'utilisateur :</label>
|
||||||
|
<input type="text" id="username" name="username" required><br><br>
|
||||||
|
|
||||||
|
<label for="firstname">Prénom :</label>
|
||||||
|
<input type="text" id="firstname" name="firstname" required><br><br>
|
||||||
|
|
||||||
|
<label for="lastname">Nom :</label>
|
||||||
|
<input type="text" id="lastname" name="lastname" required><br><br>
|
||||||
|
|
||||||
|
<label for="email">E-mail :</label>
|
||||||
|
<input type="email" id="email" name="email" required><br><br>
|
||||||
|
|
||||||
|
<label for="password">Mot de passe :</label>
|
||||||
|
<input type="password" id="password" name="password" required><br><br>
|
||||||
|
|
||||||
|
<button type="submit">Créer l'utilisateur</button>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,48 +1,28 @@
|
|||||||
<?php
|
<?php
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
// Vérifier si l'utilisateur est admin
|
|
||||||
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
header("Location: ../index.php");
|
header('Location: auth.php');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once __DIR__ . '/../controllers/controllerAdmin.php';
|
$user_dn = urldecode($_GET['dn']);
|
||||||
|
?>
|
||||||
|
|
||||||
if (!isset($_POST['user_dn'])) {
|
<!DOCTYPE html>
|
||||||
echo "Utilisateur non spécifié.";
|
<html lang="fr">
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$user_dn = $_POST['user_dn'];
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Supprimer un utilisateur</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
deleteUser($user_dn); // Fonction à implémenter pour supprimer l'utilisateur
|
<body>
|
||||||
|
<h1>Supprimer l'utilisateur</h1>
|
||||||
|
<p>Êtes-vous sûr de vouloir supprimer cet utilisateur ?</p>
|
||||||
|
<form action="../controllers/delete_user.php" method="post" onsubmit="return confirm('Êtes-vous sûr de vouloir supprimer cet utilisateur ?');">
|
||||||
|
<input type="hidden" name="dn" value="<?= htmlspecialchars($user_dn) ?>">
|
||||||
|
<button type="submit">Confirmer la suppression</button>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
|
||||||
echo "Utilisateur supprimé avec succès.";
|
</html>
|
||||||
header("Location: list_users.php");
|
|
||||||
exit;
|
|
||||||
|
|
||||||
function deleteUser($user_dn)
|
|
||||||
{
|
|
||||||
if (session_status() == PHP_SESSION_NONE) {
|
|
||||||
session_start();
|
|
||||||
}
|
|
||||||
|
|
||||||
$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);
|
|
||||||
|
|
||||||
$ldap_user = "CN=" . $_SESSION['sAMAccountName'] . ",CN=Users,DC=epul3a,DC=local";
|
|
||||||
|
|
||||||
if (!@ldap_bind($ldapconn, $ldap_user, $_SESSION['password'])) {
|
|
||||||
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!@ldap_delete($ldapconn, $user_dn)) {
|
|
||||||
die("Erreur lors de la suppression de l'utilisateur: " . ldap_error($ldapconn));
|
|
||||||
}
|
|
||||||
|
|
||||||
ldap_close($ldapconn);
|
|
||||||
}
|
|
||||||
@@ -1,40 +1,42 @@
|
|||||||
<?php
|
<?php
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||||
header("Location: ../index.php");
|
header('Location: auth.php');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once __DIR__ . '/../controllers/controllerAdmin.php';
|
require_once __DIR__ . '/../models/LDAPAuth.php';
|
||||||
|
$ldapAuth = new LDAPAuth();
|
||||||
if (!isset($_POST['user_dn'])) {
|
|
||||||
echo "Utilisateur non spécifié.";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$user_dn = $_POST['user_dn'];
|
|
||||||
$user = getUserDetails($user_dn); // Fonction à créer pour récupérer les détails d'un utilisateur
|
|
||||||
$ous = getListOU(); // Fonction à créer pour récupérer la liste des OU
|
|
||||||
|
|
||||||
if (!$user) {
|
|
||||||
echo "Utilisateur introuvable.";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Récupérer les détails de l'utilisateur à modifier
|
||||||
|
$user_dn = urldecode($_GET['dn']);
|
||||||
|
$user_details = $ldapAuth->getUserDetailsByDn($user_dn);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<h2>Modifier un utilisateur</h2>
|
<!DOCTYPE html>
|
||||||
<form method="post" action="../controllers/update_user.php">
|
<html lang="fr">
|
||||||
<input type="hidden" name="user_dn" value="<?= htmlspecialchars($user_dn) ?>">
|
|
||||||
<label>Nom:</label>
|
|
||||||
<input type="text" name="cn" value="<?= htmlspecialchars($user['cn'][0]) ?>" required><br>
|
|
||||||
|
|
||||||
<label>Email:</label>
|
<head>
|
||||||
<input type="email" name="mail" value="<?= htmlspecialchars($user['mail'][0] ?? '') ?>"><br>
|
<meta charset="UTF-8">
|
||||||
|
<title>Modifier un utilisateur</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
<label>OU:</label>
|
<body>
|
||||||
|
<h1>Modifier l'utilisateur</h1>
|
||||||
|
<form action="../controllers/edit_user.php" method="post">
|
||||||
|
<input type="hidden" name="dn" value="<?= htmlspecialchars($user_dn) ?>">
|
||||||
|
|
||||||
<button type="submit">Enregistrer</button>
|
<input type="text" id="firstname" name="firstname" value="<?= htmlspecialchars($user_details['givenName'] ?? '') ?>">
|
||||||
</form>
|
|
||||||
|
<input type="text" id="lastname" name="lastname" value="<?= htmlspecialchars($user_details['sn'] ?? '') ?>">
|
||||||
|
|
||||||
|
<input type="email" id="email" name="email" value="<?= htmlspecialchars($user_details['mail'] ?? '') ?>">
|
||||||
|
|
||||||
|
<label for="new_password">Nouveau mot de passe :</label>
|
||||||
|
<input type="password" id="new_password" name="new_password">
|
||||||
|
|
||||||
|
<button type="submit">Modifier l'utilisateur</button>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -36,8 +36,8 @@ if (!empty($users)) {
|
|||||||
<td>" . ($entry['mail'][0] ?? '') . "</td>
|
<td>" . ($entry['mail'][0] ?? '') . "</td>
|
||||||
<td>" . ($entry['distinguishedname'][0] ?? '') . "</td>
|
<td>" . ($entry['distinguishedname'][0] ?? '') . "</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='edit_user.php?dn=" . urlencode($entry['distinguishedname'][0]) . "'>Modifier</a>
|
<a href='../views/edit_user.php?dn=" . urlencode($entry['distinguishedname'][0]) . "'>Modifier</a>
|
||||||
<a href='delete_user.php?dn=" . urlencode($entry['distinguishedname'][0]) . "' onclick='return confirm(\"Confirmer la suppression ?\")'>Supprimer</a>
|
<a href='../controllers/delete_user.php?dn=" . urlencode($entry['distinguishedname'][0]) . "' onclick='return confirm(\"Confirmer la suppression ?\")'>Supprimer</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>";
|
</tr>";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,9 +10,6 @@ if (!isset($_SESSION["login"]) || $_SESSION["login"] !== true) {
|
|||||||
|
|
||||||
require_once __DIR__ . '/../controllers/controllerAdmin.php';
|
require_once __DIR__ . '/../controllers/controllerAdmin.php';
|
||||||
|
|
||||||
// Récupérer les infos de l'utilisateur
|
|
||||||
// $user_info = getUserByPseudo($_SESSION["sAMAccountName"]);
|
|
||||||
|
|
||||||
echo "Bienvenue " . $_SESSION["sAMAccountName"] . "!";
|
echo "Bienvenue " . $_SESSION["sAMAccountName"] . "!";
|
||||||
|
|
||||||
// Affichage du menu
|
// Affichage du menu
|
||||||
@@ -29,43 +26,42 @@ if ($_SESSION["is_admin"]) {
|
|||||||
|
|
||||||
// Modifier la section d'affichage des OUs
|
// Modifier la section d'affichage des OUs
|
||||||
foreach ($_SESSION['admin_ous'] as $ou) {
|
foreach ($_SESSION['admin_ous'] as $ou) {
|
||||||
|
preg_match('/[^=]*=([^,]*)/', $ou, $matches);
|
||||||
|
$shortName = $matches[1] ?? $ou;
|
||||||
|
|
||||||
echo "<h3>Gestion de $ou</h3>";
|
echo "<h3>Gestion de $ou</h3>";
|
||||||
echo "<a href='../views/list_users.php?ou=" . urlencode($ou) . "'>Voir les utilisateurs</a><br>";
|
echo "<a href='../views/list_users.php?ou=" . urlencode($ou) . "'>Voir les utilisateurs dans l'OU " . $shortName . "</a><br>";
|
||||||
echo "<a href='../views/add_user.php?ou=" . urlencode($ou) . "'>Ajouter un utilisateur</a><br><br>";
|
echo "<a href='../views/create_user.php?ou=" . urlencode($ou) . "'>Ajouter un utilisateur dans l'OU " . $shortName . "</a><br><br>";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<a href='../views/list_users.php'>Liste complète des utilisateurs des OU administrées</a><br>";
|
echo "<a href='../views/list_users.php'>Liste complète des utilisateurs des OUs administrées</a><br>";
|
||||||
|
|
||||||
echo "<pre>Debug - OUs administrées : ";
|
|
||||||
print_r($_SESSION['admin_ous']);
|
|
||||||
echo "</pre>";
|
|
||||||
}
|
}
|
||||||
echo "</ul>";
|
echo "</ul>";
|
||||||
|
|
||||||
if (!isset($_SESSION['sAMAccountName'])) {
|
echo "<h2>Profil</h2>";
|
||||||
die("Nom utilisateur manquant. Veuillez vous reconnecter.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// // Exemple : Lister toutes les OUs
|
|
||||||
// $ous = listAllOU();
|
|
||||||
// print_r($ous);
|
|
||||||
|
|
||||||
// // Exemple : Lister tous les utilisateurs
|
|
||||||
// $users = listAllUsers();
|
|
||||||
// print_r($users);
|
|
||||||
|
|
||||||
// Exemple : Récupérer l'OU d'un utilisateur
|
|
||||||
// $username = $_SESSION['sAMAccountName'];
|
|
||||||
// $ou = getUserOU($username);
|
|
||||||
// echo "OU de l'utilisateur : $ou";
|
|
||||||
|
|
||||||
|
|
||||||
// Debug : Vérifier les groupes de l'utilisateur
|
|
||||||
$ldapAuth = new LDAPAuth();
|
$ldapAuth = new LDAPAuth();
|
||||||
$user_dn = $ldapAuth->getUserDN($_SESSION['sAMAccountName']);
|
$user_dn = $ldapAuth->getUserDN($_SESSION['sAMAccountName']);
|
||||||
echo "<pre>Groupes de l'utilisateur : ";
|
|
||||||
print_r($ldapAuth->getUserGroups($user_dn));
|
echo "<h3>Groupes de l'utilisateur</h3>";
|
||||||
echo "</pre>";
|
$userGroups = $ldapAuth->getUserGroups($user_dn);
|
||||||
|
|
||||||
|
if (!empty($userGroups) && isset($userGroups['count']) && $userGroups['count'] > 0) {
|
||||||
|
echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>
|
||||||
|
<tr >
|
||||||
|
<th>Groupe</th>
|
||||||
|
</tr>";
|
||||||
|
|
||||||
|
// Skip the 'count' element and iterate through numeric indices
|
||||||
|
for ($i = 0; $i < $userGroups['count']; $i++) {
|
||||||
|
echo "<tr>
|
||||||
|
<td>" . htmlspecialchars($userGroups[$i]) . "</td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
echo "</table>";
|
||||||
|
} else {
|
||||||
|
echo "<p>Aucun groupe trouvé pour cet utilisateur.</p>";
|
||||||
|
}
|
||||||
|
|
||||||
// Ajouter cette section après l'affichage des groupes
|
// Ajouter cette section après l'affichage des groupes
|
||||||
$user_details = $ldapAuth->getUserDetails($_SESSION['sAMAccountName']);
|
$user_details = $ldapAuth->getUserDetails($_SESSION['sAMAccountName']);
|
||||||
|
|||||||
Reference in New Issue
Block a user