Auth パッケージ
Auth パッケージは Fuel における標準化された認証インターフェイスを提供します。 これにより、ユーザは自分自身で新しいドライバを書くことができ、 基本的なメソッドを保つことで、古いコードに新しいドライバを簡単に統合することもできます。
自作ドライバを書く
ドライバを書く方法は 2 つあります。 Auth ドライバクラスを継承して、新しいドライバをゼロから作る方法と、 SimpleAuth クラスを継承して必要に応じて変更する方法です。
Auth ドライバは、組になって機能する 3 つのタイプのクラスから構成されています。その 3 つは:
Auth クラスの継承
このようにクラスを継承します:
<?php
class Auth_Login_MyDriver extends \Auth\Auth_Login_Driver
{
// ドライバクラスに定義されている必要な関数と変数をすべて実装してください。
}
/* End of file mydriver.php */
関数の実装
Auth ドライバクラスを継承したときは、実装が必要な各々の関数に期待される返り値に注意してください。 どのメソッドもサンプルが提供されているので、何が返されるべきかわかります。例を挙げると:
/**
* 現在ログイン中のユーザのユーザ識別情報を
* 次の形式で取得: array(driver_id, user_id)
*
* @return array
*/
abstract public function get_user_id();
上記のコードは、すべてのドライバが持たなければならない get_user_id 関数を示しています。 抽象関数を持つクラスを継承したすべての拡張クラスと同じく、これらの関数は拡張クラスで定義されなければなりません。 抽象関数の返り値の形式はコメント内で与えられています。今回のケースでは array(driver_id, user_id) です。 自作ドライバが他のドライバと一緒に機能するように、くれぐれも正しい値を返すようにしてください。そうでなければ、 プロトコル違反になります。
さきほどと同じ関数でも SimpleAuth ドライバの実装がこちらです。
/**
* ユーザ ID を取得する
*
* @return Array ドライバ ID とユーザ ID を含む
*/
public function get_user_id()
{
if (empty($this->user))
{
return false;
}
return array($this->id, (int) $this->user['id']);
}
新しいドライバにすべてを配置し終えたら、Auth の config を入れ換えるか、または、追加してください。
// config/auth.php の配列の内部
// ドライバとして追加する
'driver' => array('SimpleAuth', 'MyDriver'),
// SimpleAuth ドライバと入れ換える
'driver' => array('MyDriver'),