]> git.mjollnir.org Git - moodle.git/commitdiff
user_login() was not converted to using get_cache_flags().
authormartinlanghoff <martinlanghoff>
Mon, 19 Nov 2007 02:43:48 +0000 (02:43 +0000)
committermartinlanghoff <martinlanghoff>
Mon, 19 Nov 2007 02:43:48 +0000 (02:43 +0000)
It was still using the 'old' get_config() interface, so the 'cookie'
set by ntlmsso_finish() wasn't retrieved at all, and the automatic
login always failed.

Signed-off-by: Iñaki Arenaza <iarenuno@eteo.mondragon.edu>
Author: Iñaki Arenaza <iarenuno@eteo.mondragon.edu>
Committer: Martin Langhoff <martin@catalyst.net.nz>

auth/ldap/auth.php

index a15324567521dea63367b896a9a032549dfc9570..f129734ad5ef41b92b923e7bba6c5d763b56f68f 100644 (file)
@@ -95,42 +95,37 @@ class auth_plugin_ldap extends auth_plugin_base {
         //
         $key = sesskey();
         if (!empty($this->config->ntlmsso_enabled) && $key === $password) {
-            if ($cookie   = get_config('auth/ldap/ntlmsess', $key)) {
-                // These checks match the work done
-                if (preg_match('/^(\d+):(.+)$/',$cookie,$matches)) {
-                    // $matches[0] is the whole matched string...
-                    $time         = $matches[1];
-                    $sessusername = $matches[2];
-                    if (((time() - ((int)$time)) < AUTH_NTLMTIMEOUT)
-                        && $sessusername === $username) {
-
-                        unset($cookie);
-                        unset($time);
-                        unset($sessusername);
-
-                        // Check that the user is inside one of the configured LDAP contexts
-                        $validuser = false;
-                        $ldapconnection = $this->ldap_connect();
-                        if ($ldapconnection) {
-                            // if the user is not inside the configured contexts,
-                            // ldap_find_userdn returns false.
-                            if ($this->ldap_find_userdn($ldapconnection, $extusername)) {
-                                $validuser = true;
-                            }
-                            ldap_close($ldapconnection);
-                        }
+            $cf = get_cache_flags('auth/ldap/ntlmsess');
+            // We only get the cache flag if we retrieve it before
+            // it expires (AUTH_NTLMTIMEOUT seconds).
+            if (!isset($cf[$key]) || $cf[$key] === '') {
+                return false;
+            }
 
-                        // Shortcut here - SSO confirmed
-                        return $validuser;
+            $sessusername = $cf[$key];
+            if ($username === $sessusername) {
+                unset($sessusername);
+                unset($cf);
+
+                // Check that the user is inside one of the configured LDAP contexts
+                $validuser = false;
+                $ldapconnection = $this->ldap_connect();
+                if ($ldapconnection) {
+                    // if the user is not inside the configured contexts,
+                    // ldap_find_userdn returns false.
+                    if ($this->ldap_find_userdn($ldapconnection, $extusername)) {
+                        $validuser = true;
                     }
+                    ldap_close($ldapconnection);
                 }
+
+                // Shortcut here - SSO confirmed
+                return $validuser;
             }
         } // End SSO processing
         unset($key);
 
-
         $ldapconnection = $this->ldap_connect();
-
         if ($ldapconnection) {
             $ldap_user_dn = $this->ldap_find_userdn($ldapconnection, $extusername);