Auth パッケージ

Auth パッケージは Fuel における標準化された認証インターフェイスを提供します。 これにより、ユーザは自分自身で新しいドライバを書くことができ、 基本的なメソッドを保つことで、古いコードに新しいドライバを簡単に統合することもできます。

自作ドライバを書く

2 つの方法でドライバを書くことができます。 1 つは、新しいドライバを最初から作成するために Auth ドライバクラスを拡張するか、または既存のドライバクラスを拡張し、必要に応じてそれらを変更します。

Auth ドライバは、組になって機能する 3 つのタイプのクラスから構成されています。その 3 つは:

  • Login (Auth_Login_Driver) 。
  • Group (Auth_Group_Driver) 。
  • Acl (Auth_Acl_Driver) 。

Auth クラスの継承

このようにクラスを継承します:

<?php

class Auth_Login_Mydriver extends \Auth\Auth_Login_Driver
{

	// ドライバクラスに定義されている必要な関数と変数をすべて実装してください。

}

/* app/classes/auth/login/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/auth.php の配列の内部

// 2 つ目のドライバとしてそれを追加
'driver' => array('Simpleauth', 'Mydriver'),

// もしくは、既存のドライバを置き換え
'driver' => array('Mydriver'),