1

私は、ユーザーがコンテンツを投稿すると同時にログインできるようにするdrupalサイトに取り組んでいます。元のフォームにメールとパスワードのフィールドを正常に追加しましたが、実際にユーザーにログインする方法がわかりません。(私の計画は、コンテンツが作成される前の検証ステップで、ログインしているユーザーがコンテンツの所有者になるようにすることです)。

user.module APIには、どういうわけか正しく見える3つの関数があります。

さて、私の質問はどちらですか?私も正しい方向に進んでいますか?

4

1 に答える 1

7

ユーザー名/パスワードを確認し、それらが$uidユーザーのを検証して取得したことを確認したら、次のようにします。

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

したがって、グローバル$userオブジェクトを上書きして、 user_authenticate_finalizeを呼び出します。

更新:
検証とログインを1つのステップで実行すると、次のようになります。

$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.
}
于 2010-08-28T18:24:39.503 に答える