$login, 'display_name' => $login, 'email' => null, 'groups' => [], 'is_admin' => false, ]; } $entries = ldap_get_entries($connection, $search); ldap_unbind($connection); if (($entries['count'] ?? 0) < 1) { return [ 'login' => $login, 'display_name' => $login, 'email' => null, 'groups' => [], 'is_admin' => false, ]; } $entry = $entries[0]; $groups = []; if (!empty($entry['memberof']) && is_array($entry['memberof'])) { for ($i = 0; $i < ($entry['memberof']['count'] ?? 0); $i++) { $dn = $entry['memberof'][$i]; if (preg_match('/CN=([^,]+)/u', $dn, $matches)) { $groups[] = $matches[1]; } } } $isAdmin = false; foreach ($groups as $group) { if (mb_strtolower(trim($group)) === mb_strtolower(trim($adminGroupName))) { $isAdmin = true; break; } } return [ 'login' => $entry['samaccountname'][0] ?? $login, 'display_name' => $entry['displayname'][0] ?? $entry['cn'][0] ?? $login, 'email' => $entry['mail'][0] ?? null, 'groups' => $groups, 'is_admin' => $isAdmin, ]; } }