Skip to content

Commit a0e6982

Browse files
committed
fix update-ldap-cache.php
1 parent 26ce09a commit a0e6982

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

workers/update-ldap-cache.php

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,20 @@
3232
echo " use -f argument to flush cache, or -u argument to update without flush.\n";
3333
} else {
3434
echo "updating cache...\n";
35-
echo "waiting for LDAP response (users)...\n";
36-
$users = $LDAP->search("objectClass=posixAccount", $CONFIG["ldap"]["basedn"]);
37-
echo "response received.\n";
38-
// phpcs:disable
39-
$user_CNs = array_map(function ($x){return $x->getAttribute("cn")[0];}, $users);
40-
// phpcs:enable
35+
36+
$user_CNs = $LDAP->getUserGroup()->getAttribute("memberuid");
4137
sort($user_CNs);
4238
$REDIS->setCache("sorted_users", "", $user_CNs);
39+
40+
// search entire tree, some users created for admin purposes might not be in the normal OU
41+
echo "waiting for LDAP search (users)...\n";
42+
$users = $LDAP->search("objectClass=posixAccount", $CONFIG["ldap"]["basedn"]);
43+
echo "response received.\n";
4344
foreach ($users as $user) {
4445
$uid = $user->getAttribute("cn")[0];
46+
if (!in_array($uid, $user_CNs)) {
47+
continue;
48+
}
4549
$REDIS->setCache($uid, "firstname", $user->getAttribute("givenname")[0]);
4650
$REDIS->setCache($uid, "lastname", $user->getAttribute("sn")[0]);
4751
$REDIS->setCache($uid, "org", $user->getAttribute("o")[0]);
@@ -52,21 +56,21 @@
5256
}
5357

5458
$org_group_ou = new LDAPEntry($LDAP->getConn(), $CONFIG["ldap"]["orggroup_ou"]);
55-
echo "waiting for LDAP response (org_groups)...\n";
56-
$org_groups = $LDAP->search("objectClass=posixGroup", $CONFIG["ldap"]["basedn"]);
59+
echo "waiting for LDAP search (org groups)...\n";
60+
$org_groups = $org_group_ou->getChildrenArray(true);
5761
echo "response received.\n";
5862
// phpcs:disable
59-
$org_group_CNs = array_map(function($x){return $x->getAttribute("cn")[0];}, $org_groups);
63+
$org_group_CNs = array_map(function($x){return $x["cn"][0];}, $org_groups);
6064
// phpcs:enable
6165
sort($org_group_CNs);
6266
$REDIS->setCache("sorted_orgs", "", $org_group_CNs);
6367
foreach ($org_groups as $org_group) {
64-
$gid = $org_group->getAttribute("cn")[0];
65-
$REDIS->setCache($gid, "members", $org_group->getAttribute("memberuid"));
68+
$gid = $org_group["cn"][0];
69+
$REDIS->setCache($gid, "members", (@$org_group["memberuid"] ?? []));
6670
}
6771

6872
$pi_group_ou = new LDAPEntry($LDAP->getConn(), $CONFIG["ldap"]["pigroup_ou"]);
69-
echo "waiting for LDAP response (pi_groups)...\n";
73+
echo "waiting for LDAP search (pi groups)...\n";
7074
$pi_groups = $pi_group_ou->getChildrenArray(true);
7175
echo "response received.\n";
7276
// phpcs:disable
@@ -75,13 +79,14 @@
7579
sort($pi_group_CNs);
7680
// FIXME should be sorted_pi_groups
7781
$REDIS->setCache("sorted_groups", "", $pi_group_CNs);
82+
7883
$user_pi_group_member_of = [];
7984
foreach ($user_CNs as $uid) {
8085
$user_pi_group_member_of[$uid] = [];
8186
}
8287
foreach ($pi_groups as $pi_group) {
83-
$gid = $pi_group->getAttribute("cn")[0];
84-
$REDIS->setCache($gid, "members", $pi_group->getAttribute("memberuid"));
88+
$gid = $pi_group["cn"][0];
89+
$REDIS->setCache($gid, "members", (@$pi_group["memberuid"] ?? []));
8590
}
8691
foreach ($user_pi_group_member_of as $uid => $pi_groups) {
8792
// FIXME should be pi_groups

0 commit comments

Comments
 (0)