コントローラ - Controller_Authクラス

コントローラ - 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クラスページ作成