Files
PHP-LDAP/controllers/controllerAdmin.php

93 lines
2.9 KiB
PHP

<?php
function listAllOU()
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
if (!isset($_SESSION['user_pseudo'])) {
die("Nom utilisateur manquant. Veuillez vous reconnecter.");
}
$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['user_pseudo'] . ",CN=Users,DC=epul3a,DC=local";
if (!@ldap_bind($ldapconn, $ldap_user, $_SESSION['password'])) {
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
}
$searchBase = "DC=epul3a,DC=local";
$filter = "(objectClass=organizationalUnit)";
$attributes = array("ou", "distinguishedName");
$result = @ldap_search($ldapconn, $searchBase, $filter, $attributes);
$ous = [];
if ($result) {
$entries = ldap_get_entries($ldapconn, $result);
if ($entries['count'] > 0) {
foreach ($entries as $key => $entry) {
if (is_numeric($key)) {
$ous[] = $entry; // Ajouter chaque OU au tableau
}
}
}
} else {
echo "Error: " . ldap_error($ldapconn);
}
ldap_close($ldapconn);
return $ous; // Retourner le tableau des OUs
}
function listAllUsers()
{
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['user_pseudo'] . ",CN=Users,DC=epul3a,DC=local";
if (!@ldap_bind($ldapconn, $ldap_user, $_SESSION['password'])) {
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
}
$searchBase = "DC=epul3a,DC=local";
$filter = "(objectClass=user)";
$attributes = array("cn", "sn", "givenName", "mail", "distinguishedName");
$result = @ldap_search($ldapconn, $searchBase, $filter, $attributes);
$users = [];
if ($result) {
$entries = ldap_get_entries($ldapconn, $result);
if ($entries['count'] > 0) {
foreach ($entries as $key => $entry) {
if (is_numeric($key)) {
// Extraire l'OU du DN
preg_match('/OU=([^,]+)/', $entry['distinguishedname'][0], $matches);
$ou = isset($matches[1]) ? $matches[1] : 'Users';
$entry['ou'] = $ou; // Ajouter l'OU à l'entrée de l'utilisateur
$users[] = $entry; // Ajouter chaque utilisateur au tableau
}
}
}
} else {
echo "Error: " . ldap_error($ldapconn);
}
ldap_close($ldapconn);
return $users; // Retourner le tableau des utilisateurs
}