Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-11299

ldap field sync problem (prevents userdata to get from ldap)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2
    • Fix Version/s: 1.7.2, 1.8.2, 1.9
    • Component/s: Authentication
    • Labels:
      None
    • Environment:
      debian etch, apache
    • Database:
      MySQL
    • Affected Branches:
      MOODLE_18_STABLE
    • Fixed Branches:
      MOODLE_17_STABLE, MOODLE_18_STABLE, MOODLE_19_STABLE

      Description

      I'm using authldap module, and set up successfully. Can logon to ldap, and so on. But if I set the userdata fields to get from the ldap, it simply don't get down.

      I figured out that tha problem caused by an invalid (empty) search filter in auth.php (moodle/auth/ldap) at line 139 the original code:

      1. if (!$user_info_result = ldap_read($ldapconnection, $user_dn, $this->config->objectclass, $search_attribs)) { # return false; // error! # }

      It is commented out by me and hardcoded the following:
      if (!$user_info_result = ldap_read($ldapconnection, $user_dn, '(objectclass=VirtualMailAccount)', $search_attribs))

      { return false; // error! }

      this way data can come down, because objectclass is the correct value...

      Please correct the bug, so after I upgrade, there will be no need such hardcoded stuff...

        Gliffy Diagrams

          Activity

          Hide
          skodak Petr Skoda added a comment -

          Seems like a configuration problem, not a bug - what do you think Iñaki?

          Show
          skodak Petr Skoda added a comment - Seems like a configuration problem, not a bug - what do you think Iñaki?
          Hide
          iarenaza Iñaki Arenaza added a comment -

          I'd say so. Éliás, have you specified 'VirtualMailAccount' as the objectClass configuration value in the LDAP settings page? If you are using a non-standard objectClass attribute, you need to specify it there.

          Saludos. Iñaki.

          Show
          iarenaza Iñaki Arenaza added a comment - I'd say so. Éliás, have you specified 'VirtualMailAccount' as the objectClass configuration value in the LDAP settings page? If you are using a non-standard objectClass attribute, you need to specify it there. Saludos. Iñaki.
          Hide
          eliast Éliás Tamás added a comment -

          Yeah, I'm using virtualMailAccount as the objectclass, since the usernames are the users' email address.

          I attach a screenshot, where you can see, that the objectclass (Objektumosztály line) is already and correctly specified in the config, and I haven't found any other way to set it. Authentication however ok, so moodle use the setting correctly previosuly.

          Show
          eliast Éliás Tamás added a comment - Yeah, I'm using virtualMailAccount as the objectclass, since the usernames are the users' email address. I attach a screenshot, where you can see, that the objectclass (Objektumosztály line) is already and correctly specified in the config, and I haven't found any other way to set it. Authentication however ok, so moodle use the setting correctly previosuly.
          Hide
          iarenaza Iñaki Arenaza added a comment -

          I think I have find the problem. You are specifying the objectClass attribute name in lowercase ('objectclass') and the code expects it as 'objectClass' (note the upper case 'C'). If you change line 59 of .../auth/ldap/auth.php from:

          } else if (strpos($this->config->objectclass, 'objectClass=') !== 0)

          { to }

          else if (stripos($this->config->objectclass, 'objectClass=') !== 0) {

          that should fix it. Please, confirm that it does so we can put the fix into CVS.

          Saludos. Iñaki.

          Show
          iarenaza Iñaki Arenaza added a comment - I think I have find the problem. You are specifying the objectClass attribute name in lowercase ('objectclass') and the code expects it as 'objectClass' (note the upper case 'C'). If you change line 59 of .../auth/ldap/auth.php from: } else if (strpos($this->config->objectclass, 'objectClass=') !== 0) { to } else if (stripos($this->config->objectclass, 'objectClass=') !== 0) { that should fix it. Please, confirm that it does so we can put the fix into CVS. Saludos. Iñaki.
          Hide
          eliast Éliás Tamás added a comment -

          Yeah, using "objectClass" instead of "objectclass" solved the problem, however ldap accepts both cases.

          Thank you for the fast answer!

          Show
          eliast Éliás Tamás added a comment - Yeah, using "objectClass" instead of "objectclass" solved the problem, however ldap accepts both cases. Thank you for the fast answer!
          Hide
          iarenaza Iñaki Arenaza added a comment -

          Fixed in CVS. Closing now. Thanks for the report.

          Saludos. Iñaki.

          Show
          iarenaza Iñaki Arenaza added a comment - Fixed in CVS. Closing now. Thanks for the report. Saludos. Iñaki.

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Fix Release Date:
                30/Mar/07