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">
|
<form method="post">
|
||||||
<label>Gebruikersnaam (zonder domein): <input type="text" name="username" required></label><br>
|
<label>Gebruikersnaam (zonder domein): <input type="text" name="username" required></label><br>
|
||||||
<label>Wachtwoord: <input type="password" name="password" required></label><br>
|
<label>Wachtwoord: <input type="password" name="password" required></label><br>
|
||||||
|
|||||||
Reference in New Issue
Block a user