Вручную войти пользователя - PullRequest
1 голос
/ 28 августа 2010

Я работаю на сайте drupal, где я разрешаю пользователям входить в систему и одновременно публиковать контент. Я успешно добавил поля электронной почты и пароля в исходную форму, но я застрял в том, как я должен на самом деле войти в систему пользователя. (Мой план состоит в том, чтобы сделать это на этапе проверки перед созданием контента, чтобы сделать зарегистрированного пользователя владельцем контента).

Я могу найти три функции в API user.module, которые как-то выглядят правильно:

Теперь мой вопрос: какой это? Я даже на правильном пути?

1 Ответ

6 голосов
/ 28 августа 2010

После того, как вы проверили имя пользователя / пароль и обнаружили, что они подтверждают и получили $uid пользователя, вы должны сделать что-то вроде этого:

$account = user_load($uid))
global $user;
$user = $account;
user_authenticate_finalize($form_state['values']);

Таким образом, вы перезаписываете глобальный $user объект и вызываете user_authenticate_finalize .

Обновление:
Выполнение проверки и входа в систему за один шаг будет выглядеть так:

$account = user_load(array(
  'name' => $form_values['name'],
  'pass' => trim($form_values['pass']),
  'status' => 1)
);
if ($account && !drupal_is_denied('mail', $account->mail) {
  global $user;
  $user = $account;
  user_authenticate_finalize($form_state['values']);
}
else {
  // Raise validation error.
}
...