Quote:
Originally Posted by john.parlane
We're finding that the 'remember me' tick box is not working. The cookie is not being set correctly so that when the user comes back they have to re-enter their login each time.
Is anybody else gettings this?
Currently working on a fix...
|
Have implemented fix for this, as shown below. The code expands on the "if ($newuser->errors)" statement right at the end.
The problem was that after the user is saved with "$newuser->save()" the cookie salt is changed and the password rehashed in the database. The cookie then doesnt match it. Fix is to simply recreate the cookie by getting and rehashing the db password.
Have also implemented jaikumarm's fix for the first time login issue here.
Code:
if ($newuser->errors) {
process_logout();
eval(standard_error("Error creating/updating user<br/>".$newuser->errors));
} else {
$newuserid = $newuser->save();
// Saving the user (above) rehashes the password on the DB so now need to update cookie password also, or 'remember me' login optoin will fail.
$dbuserinfo = $vbulletin->db->query_first_slave("SELECT password FROM vbull.user WHERE username = '$username'");
if ($dbuserinfo) {
$db_hashed_pwd = $dbuserinfo['password'];
$cookie_hashed_pwd = md5($db_hashed_pwd.COOKIE_SALT);
vbsetcookie('password', $cookie_hashed_pwd);
}
// Following code is necessary to fix a hook timing issue with this plugin that results in users being told their login credentials are wrong the first time they login with LDAP credentials
verify_authentication($username, $passwd, $vbulletin->GPC['vb_login_md5password'], $vbulletin->GPC['vb_login_md5password_utf'], $vbulletin->GPC['cookieuser'], true);
exec_unstrike_user($username);
process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']);
do_login_redirect();
}
}
Note that $username needs to be set a the top top of the script, along with $passwd, with:
$username = $vbulletin->GPC['vb_login_username'];
$passwd = $vbulletin->GPC['vb_login_password'];
And I removed the following line (118) which doesnt seem to do anything useful:
$vbulletin->GPC['cookieuser'] = $vbulletin->GPC['vb_login_username'];