Skip to content

Commit

Permalink
user_login() was not converted to using get_cache_flags().
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
martinlanghoff committed Nov 19, 2007
1 parent 58eada3 commit 0cbcc8e
Showing 1 changed file with 23 additions and 28 deletions.
51 changes: 23 additions & 28 deletions auth/ldap/auth.php
Expand Up @@ -95,42 +95,37 @@ function user_login($username, $password) {
//
$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);

Expand Down

0 comments on commit 0cbcc8e

Please sign in to comment.