From 05da6502ba6a2926ddbe878f173866f5d17e2ca2 Mon Sep 17 00:00:00 2001 From: paca70 Date: Tue, 12 Nov 2002 12:10:08 +0000 Subject: [PATCH] added support for list users from ldap. --- auth/ldap/README-LDAP | 2 ++ auth/ldap/lib.php | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/auth/ldap/README-LDAP b/auth/ldap/README-LDAP index 1f2df1ebb7..8cea11cd82 100644 --- a/auth/ldap/README-LDAP +++ b/auth/ldap/README-LDAP @@ -27,6 +27,8 @@ $CFG->ldap_search_sub "Put value <> 0 if you like to $CFG->ldap_user_attribute "What attribute is used to name/search users. Usually 'cn' when using Novell e-directory +$CFG->ldap_objectclass When filtering objects from ldap this filter is used + defaults to "objectClass=*" And if you like to _very_ experimental: Edit /auth/ldap/lib.php function auth_get_userinfo() attribute-mappings and diff --git a/auth/ldap/lib.php b/auth/ldap/lib.php index b98b846f17..b819626825 100644 --- a/auth/ldap/lib.php +++ b/auth/ldap/lib.php @@ -66,7 +66,11 @@ function auth_get_userinfo($username){ } $user_dn = auth_ldap_find_userdn($ldap_connection, $username); - $user_info_result = ldap_read($ldap_connection,$user_dn,"objectClass=*", $search_attribs); + if (! isset($CFG->ldap_objectclass)) { + $CFG->ldap_objectclass="objectClass=*"; + } + + $user_info_result = ldap_read($ldap_connection,$user_dn,$objectclass, $search_attribs); if ($user_info_result) { $user_entry = ldap_get_entries($ldap_connection, $user_info_result); foreach ($moodleattributes as $key=>$value){ @@ -86,6 +90,35 @@ function auth_get_userinfo($username){ return $result; } +function auth_get_userlist() { + //returns all users from ldap servers + global $CFG; + $fresult = array(); + $ldap_connection = auth_ldap_connect(); + auth_ldap_bind($ldap_connection); + if (! isset($CFG->ldap_objectclass)) { + $CFG->ldap_objectclass="objectClass=*"; + } + $contexts=explode(";",$CFG->ldap_contexts); + foreach ($contexts as $context) { + + if($CFG->ldap_search_sub){ + //use ldap_search to find first user from subtree + $ldap_result = ldap_search($ldap_connection, $context, "(".$CFG->ldap_objectclass.")", array($CFG->ldap_user_attribute)); + } else { + //search only in this context + $ldap_result = ldap_list($ldap_connection, $context, "(".$CFG->ldap_objectclass.")", array($CFG->ldap_user_attribute)); + } + + $users = ldap_get_entries($ldap_connection,$ldap_result); + //add found users to list + for ($i=0;$i<$users['count'];$i++) { + array_push($fresult,($users[$i][$CFG->ldap_user_attribute][0])); + } + } + return $fresult; + +} function auth_ldap_connect(){ //connects to ldap-server global $CFG; @@ -96,8 +129,8 @@ function auth_ldap_connect(){ error("LDAP-module cannot connect to server: $CFG->ldap_host_url"); return false; } - } + function auth_ldap_bind($ldap_connection){ //makes bind to ldap for searching users //uses ldap_bind_dn or anonymous bind -- 2.39.5