ok
This commit is contained in:
61
functions/ldap_groups.php
Normal file
61
functions/ldap_groups.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
// auth/ldap_groups.php
|
||||
|
||||
/**
|
||||
* Haalt alle voornamen van gebruikers in een opgegeven LDAP-groep op.
|
||||
*
|
||||
* @param string $groupName Naam van de AD-groep (bijv. APP_LootjesTrekken)
|
||||
* @return array Array van voornamen, of lege array als fout
|
||||
*/
|
||||
function get_group_members($groupName): array
|
||||
{
|
||||
$config = require __DIR__ . '/../config/config.php';
|
||||
$ldap_conf = $config['ldap'];
|
||||
|
||||
$result = [];
|
||||
|
||||
// Verbinden met LDAP
|
||||
$ldapconn = ldap_connect($ldap_conf['server'], $ldap_conf['port']);
|
||||
if (!$ldapconn) return $result;
|
||||
|
||||
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
|
||||
|
||||
// Bind met admin account
|
||||
if (!@ldap_bind($ldapconn, $ldap_conf['admin_user'], $ldap_conf['admin_pass'])) {
|
||||
ldap_unbind($ldapconn);
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Zoek de groep
|
||||
$group_filter = "(&(objectClass=group)(cn={$groupName}))";
|
||||
$group_attrs = ['member']; // bevat DN's van groepsleden
|
||||
$group_search = ldap_search($ldapconn, $ldap_conf['base_dn'], $group_filter, $group_attrs);
|
||||
|
||||
if (!$group_search) {
|
||||
ldap_unbind($ldapconn);
|
||||
return $result;
|
||||
}
|
||||
|
||||
$groups = ldap_get_entries($ldapconn, $group_search);
|
||||
if ($groups['count'] === 0) {
|
||||
ldap_unbind($ldapconn);
|
||||
return $result;
|
||||
}
|
||||
|
||||
$members = $groups[0]['member'] ?? [];
|
||||
// member[0..count-1] bevatten DN's
|
||||
for ($i = 0; $i < $members['count']; $i++) {
|
||||
$user_dn = $members[$i];
|
||||
$user_search = ldap_read($ldapconn, $user_dn, '(objectClass=person)', ['givenName']);
|
||||
if (!$user_search) continue;
|
||||
|
||||
$user_entries = ldap_get_entries($ldapconn, $user_search);
|
||||
if ($user_entries['count'] > 0) {
|
||||
$result[] = $user_entries[0]['givenname'][0] ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
ldap_unbind($ldapconn);
|
||||
return $result;
|
||||
}
|
||||
@@ -29,6 +29,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
require __DIR__ . '/functions/ldap_groups.php';
|
||||
|
||||
// Haal alle voornamen op
|
||||
$members = get_group_members('APP_LootjesTrekken');
|
||||
|
||||
echo "<h3>Deelnemers aan de trekking:</h3><ul>";
|
||||
foreach ($members as $name) {
|
||||
echo "<li>" . htmlspecialchars($name) . "</li>";
|
||||
}
|
||||
echo "</ul>";
|
||||
?>
|
||||
|
||||
<form method="post">
|
||||
<label>Gebruikersnaam (zonder domein): <input type="text" name="username" required></label><br>
|
||||
<label>Wachtwoord: <input type="password" name="password" required></label><br>
|
||||
|
||||
Reference in New Issue
Block a user