? files ? user_authenticate_tasks_6.patch ? user_authenticate_tasks_7.patch ? sites/here.be.dragons.rtk0.net Index: modules/blogapi/blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v retrieving revision 1.108 diff -u -p -r1.108 blogapi.module --- modules/blogapi/blogapi.module 5 Sep 2007 08:42:01 -0000 1.108 +++ modules/blogapi/blogapi.module 22 Sep 2007 00:45:14 -0000 @@ -507,7 +507,7 @@ function blogapi_error($message) { function blogapi_validate_user($username, $password) { global $user; - $user = user_authenticate($username, $password); + $user = user_authenticate(array('name' => $username, 'pass' => $password)); if ($user->uid) { if (user_access('edit own blog', $user)) { Index: modules/drupal/drupal.module =================================================================== RCS file: /cvs/drupal/drupal/modules/drupal/drupal.module,v retrieving revision 1.149 diff -u -p -r1.149 drupal.module --- modules/drupal/drupal.module 21 Aug 2007 08:15:59 -0000 1.149 +++ modules/drupal/drupal.module 22 Sep 2007 00:45:14 -0000 @@ -340,6 +340,6 @@ function drupal_menu() { */ function drupal_login($username, $password) { if (variable_get('drupal_authentication_service', 0)) { - return user_authenticate($username, $password); + return user_authenticate(array('name' => $username, 'pass' => $password)); } } Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.849 diff -u -p -r1.849 user.module --- modules/user/user.module 19 Sep 2007 18:00:52 -0000 1.849 +++ modules/user/user.module 22 Sep 2007 00:45:14 -0000 @@ -1195,7 +1195,7 @@ function user_login_name_validate($form, * against local users table. If successful, sets the global $user object. */ function user_login_authenticate_validate($form, &$form_state) { - user_authenticate($form_state['values']['name'], trim($form_state['values']['pass'])); + user_authenticate($form_state['values']); } /** @@ -1213,35 +1213,50 @@ function user_login_final_validate($form /** * Try to log in the user locally. * + * @param $form_values + * An array containing the form values, at a minimum 'name' and 'pass'. * @return * A $user object, if successful. */ -function user_authenticate($name, $pass) { +function user_authenticate($form_values) { global $user; - if ($account = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1))) { + // Name and pass are required. + if (!empty($form_values['name']) && !empty($form_values['pass']) && $account = user_load(array('name' => $form_values['name'], 'pass' => trim($form_values['pass'], 'status' => 1))) { $user = $account; + user_authenticate_tasks($form_values); return $user; } } /** - * A validate handler on the login form. Update user's login timestamp, fire - * hook_user('login), and generate new session ID. + * Completes the user authentication by updating the user's login timestamp, + * firing hook_user('login'), and generating a new session ID. + * + * @param $form_values + * An array containing the form values. + * @return + * void */ -function user_login_submit($form, &$form_state) { +function user_authenticate_tasks($form_values = array()) { global $user; - if ($user->uid) { - watchdog('user', 'Session opened for %name.', array('%name' => $user->name)); + watchdog('user', 'Session opened for %name.', array('%name' => $user->name)); - // Update the user table timestamp noting user has logged in. - db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $user->uid); + // Update the user table timestamp noting user has logged in. + db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $user->uid); - user_module_invoke('login', $form_state['values'], $user); + user_module_invoke('login', $form_values, $user); - sess_regenerate(); - $form_state['redirect'] = 'user/'. $user->uid; - return; + sess_regenerate(); +} + +/** + * Redirect the user to the user page after login. + */ +function user_login_submit($form, &$form_state) { + global $user; + if ($user->uid) { + $form_state['redirect'] = 'user/'. $user->uid; } } @@ -2114,7 +2129,7 @@ function user_register_submit($form, &$f drupal_set_message(t('

Your password is %pass. You may change your password below.

', array('%pass' => $pass))); } - user_authenticate($account->name, trim($pass)); + user_authenticate(array_merge($form_state['values'], $merge_data)); $form_state['redirect'] = 'user/1/edit'; return; @@ -2128,7 +2143,7 @@ function user_register_submit($form, &$f else if (!variable_get('user_email_verification', TRUE) && $account->status && !$admin) { // No e-mail verification is required, create new user account, and login user immediately. _user_mail_notify('register_no_approval_required', $account); - if (user_authenticate($account->name, trim($pass))) { + if (user_authenticate(array_merge($form_state['values'], $merge_data))) { drupal_set_message(t('Registration succesful. You are now logged in.')); } $form_state['redirect'] = ''; Index: modules/user/user.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.pages.inc,v retrieving revision 1.1 diff -u -p -r1.1 user.pages.inc --- modules/user/user.pages.inc 10 Sep 2007 13:14:38 -0000 1.1 +++ modules/user/user.pages.inc 22 Sep 2007 00:45:14 -0000 @@ -96,14 +96,12 @@ function user_pass_reset(&$form_state, $ // First stage is a confirmation form, then login if ($action == 'login') { watchdog('user', 'User %name used one-time login link at time %timestamp.', array('%name' => $account->name, '%timestamp' => $timestamp)); - // Update the user table noting user has logged in. - // And this also makes this hashed password a one-time-only login. - db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $account->uid); // Now we can set the new user. $user = $account; + // Update the user table noting user has logged in. + // And this also makes this hashed password a one-time-only login. + user_authenticate_tasks($form_state['values']); // And proceed with normal login, going to user page. - $edit = array(); - user_module_invoke('login', $edit, $user); drupal_set_message(t('You have just used your one-time login link. It is no longer necessary to use this link to login. Please change your password.')); drupal_goto('user/'. $user->uid .'/edit'); }