? sites/all/modules/devel ? sites/default/files ? sites/default/private ? sites/default/settings.php Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.1089 diff -u -p -r1.1089 user.module --- modules/user/user.module 7 Dec 2009 03:45:16 -0000 1.1089 +++ modules/user/user.module 10 Dec 2009 04:38:39 -0000 @@ -1770,17 +1770,18 @@ function user_login($form, &$form_state) * table. If a distributed authentication module is successful, it * should set $form_state['uid'] to a user ID. * - * We use three validators instead of one since external authentication - * modules usually only need to alter the second validator. + * We use four validators instead of one since external authentication + * modules usually only need to alter the third validator. * * @see user_login_name_validate() + * @see user_login_cookie_validate() * @see user_login_authenticate_validate() * @see user_login_final_validate() * @return array * A simple list of validate functions. */ function user_login_default_validators() { - return array('user_login_name_validate', 'user_login_authenticate_validate', 'user_login_final_validate'); + return array('user_login_name_validate', 'user_login_cookie_validate', 'user_login_authenticate_validate', 'user_login_final_validate'); } /** @@ -1794,6 +1795,16 @@ function user_login_name_validate($form, } /** + * A FAPI validate handler. Sets an error if cookies are not supported. + */ +function user_login_cookie_validate($form, &$form_state) { + if (!$_COOKIE) { + $domain = ini_get('session.cookie_domain') ? ltrim(ini_get('session.cookie_domain'), '.') : $_SERVER['HTTP_HOST']; + form_set_error('', t('It seems your browser does not accept cookies. To log into this site, you need to accept cookies from the domain %domain.', array('%domain' => $domain))); + } +} + +/** * A validate handler on the login form. Check supplied username/password * against local users table. If successful, $form_state['uid'] * is set to the matching user ID. @@ -1920,6 +1931,7 @@ function user_authenticate($name, $passw */ function user_login_finalize(&$edit = array()) { global $user; + watchdog('user', 'Session opened for %name.', array('%name' => $user->name)); // Update the user table timestamp noting user has logged in. // This is also used to invalidate one-time login links. @@ -1944,6 +1956,7 @@ function user_login_finalize(&$edit = ar */ function user_login_submit($form, &$form_state) { global $user; + $user = user_load($form_state['uid']); user_login_finalize();