2012-10-25 7 views
8

私は、アプリケーションがACT urlをヒットしてから、ExpressionEngine APIを使用して新しいエントリを作成するモジュールメソッドを起動するアプリケーションを構築しています。ただし、ログイン/ログインしているユーザーがいないため、チャンネルにエントリを送信することはできません。ExpressionEngineでプログラムでユーザーをログインさせるにはどうすればいいですか

これを行う最善の方法は何ですか。 EE APIをバイパスし、手動でエントリを提出するか、またはプログラマにユーザーをログインさせます。しかし、セッションなどでどのように動作するのでしょうか?

答えが「ユーザーをログオンする」場合は、可能であればコードサンプルを見るのがよいでしょう。

ありがとうございます!

+0

ここにEE固有のサイトの提案についてお知らせします(既にサポートしている場合は、アカウントをリンクする必要があります。http://area51.stackexchange.com/proposals/46387)。/expressionengine –

+0

あなたはAPI呼び出し( '$ data'の一部として)に' member_id'を渡すことができますか? –

+0

いいえ、それは私が恐れているので動作しないようにユーザーの許可事項のためにそのエントリを投稿させません。返事をありがとう! – bjohnb

答えて

12

あなたが言及したように、新しいエントリを追加するには2通りの方法があります。

  1. を手動でチャンネルエントリーAPI(http://expressionengine.com/user_guide/development/を使用
  2. データベースレコードを追加API/api_channel_entries.html)

主な違いはあるエントリはAPIを使用して追加したことでしょう:

  • すべての通常のデータ検証を実行します(つまり、空欄にしないでください)。
  • をインストールしたサードパーティの拡張機能を実行します。

単純なチャンネルの場合、手動での追加はかなり簡単ですが、追加のテーブルを使用するサードパーティのフィールドタイプを使用している場合はさらに複雑になります。あなたの中にメンバーをログに記録する

はちょうどする必要がある場合:あなたが終了したら

// Log user back out 
$this->EE->session->destroy(); 

を:

// Get the member's id (the member must have permissions to post entries) 
$member_id = 1; 

// Create session 
$this->EE->session->create_new_session($member_id); 

は、エントリを追加するチャネルのエントリのAPIを使用して、。

+0

乾杯Andrew、本当にあなたの返信に感謝! – bjohnb

+0

問題ありません。何か問題がある場合は教えてください。 –

5

あなたは、./system/libraries/Auth.phpのAuth.phpクラスを見たいと思うでしょう。このクラスは認証APIの抽象であり、あなたが望むものを正確に行うことを可能にします。 「ユーザーとしてログオンする」機能は、メンバモジュールと同様にこれらの同じ方法を使用します。

Authenticateモジュール(無料)を見て、他の人がAuthクラスでどのように動作するかを知ることもできます。ここで

https://objectivehtml.com/authenticate

あなたが使用するためのいくつかの擬似コード:このコードは動作するはずです

// Fetch the member from the DB using whatever logic you need 
$this->EE->db->where('username', 'some-username'); 
$member = $this->EE->db->get('members'); 

$this->EE->load->library('auth'); 

// Load a new Auth_result object which logs in the member 
$authed = new Auth_result($member->row()); 
$authed->start_session($cp_session = FALSE); 

$member->free_result(); 

が、私はそれが擬似と考えられている理由である、それを実行する時間がありませんしませんでしたコード。

私はあなたの問題を解決するための最良の方法であるかどうかわかりません。 「パスワードを知らずにログインフォームを送信せずに、プログラムでログインする方法」の質問に答えるだけです。

+0

ああ、私はユーザーの方法としてログインについて忘れてしまった。だから、好奇心から、どのような方法がこの問題に近づく最善の方法でしょうか?私はすべての耳です! – bjohnb

関連する問題