コントローラ - Controller_Authクラス
ここでは、Base\Controller_Auth
クラスについて説明いたします
このコントローラは、ネクストエンジンAPIを利用した認証処理を実装してあるコントローラです
認証処理ですと、Authパッケージ内に含まれるOpauth
がありますが、
DB構造や、ログイン処理とネクストエンジンAPIとの相性の兼ね合いにより、使用しておりません
_initメソッド
_init
メソッドの処理は以下の通りです
- 言語ファイルの読み込み(Controller_Baseの_initを呼び出す)
- ネクストエンジンAPIクライアントクラスのインスタンス生成
以後、ネクストエンジンAPIクライアントクラスのインスタンスには、self::$client
でアクセスすることができます
private static $client;
public static function _init()
{
parent::_init();
// NOTE: 認証画面ではコンストラクタに何も渡せない(login時には何も渡せるものがないので、ナシで統一)
self::$client = new \Nextengine\Api\Client_Router();
}
get_loginメソッド
get_login
メソッドでは、ネクストエンジンAPIクライアントクラスのneLogin
メソッドを呼び出しています
neLoginの認証処理につきましては、こちらの資料を御覧下さい
public function get_login()
{
self::$client->neLogin();
}
get_logoutメソッド
get_logout
メソッドでは、ネクストエンジンAPIの機能は利用しておりません
現在のセッションを破棄します
public function get_logout()
{
\Session::destroy();
}
親クラスではリダイレクトを行わないため、fuel/app/classes/controller
に定義されたController_Auth
にて、リダイレクト処理を記述して下さい
※ 既にトップページへリダイレクトする処理が書かれておりますが、
こちらの処理は書き換えていただいても問題ありません
public function get_logout()
{
parent::get_logout();
\Response::redirect('/');
}
get_callbackメソッド
get_callback
メソッドは、ネクストエンジンAPIの認証が済むとリダイレクトされるメソッドです
セッションやGETパラメータの値を見て、認証済みのデータをDBとセッションに保存します
処理の詳細は、ソースコードおよび上記リンクを御覧下さい
public function get_callback()
{
// ネクストエンジンAPIの認証処理
}
get_callback
もリダイレクトを行わないため、子クラスのController_Auth
にリダイレクト処理を記述しています
public function get_callback()
{
parent::get_callback();
// NOTE: 動作デモを試したら、コメントアウトを解除して任意の場所へリダイレクトさせて下さい
// http://api.next-e.jp/secret/sample-fuelphp/about-sample.php
// \Response::redirect('/demo/api/find');
// NOTE: 上記を編集しリダイレクトさせる場合には下記の記述は不要です
$this->template->title = 'Authenticate complete!!';
$this->template->content = "";
}
処理を拡張する
これらの処理はすべてbase
パッケージの中で実装されており、fuel/app/classes/controller/auth.php
に、それを継承したクラスが定義されています
baseパッケージのコントローラファイルを直接編集すると差分の反映が困難になるため、
拡張や変更がある場合にはfuel/app/classes/controller
に記述されているクラスを拡張して下さい
例えば、企業モデルやユーザモデルにカラムを追加する場合には、_create_company
, _create_user
メソッドをオーバーライドして追加したカラムの値も設定することで実現できます
必要に応じてメソッドを拡張して下さい
protected function _create_company(array $company_info)
{
$company = parent::_create_company($company_info);
// NOTE: ここに任意のパラメータを入れ込む処理を記述できます
return $company;
}
// ...
protected function _create_user(array $user_info, $company_id)
{
$user = parent::_create_user($user_info, $company_id);
// NOTE: ここに任意のパラメータを入れ込む処理を記述できます
return $user;
}
更新履歴
- 2015/02/17: コントローラ - Controller_Authクラスページ作成