Auth パッケージ

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

Auth_Group_Driver

このドライバは、すべての Auth Group ドライバの基底クラスです。抽象クラスとして定義されており、 すべての Group ドライバに汎用なメソッド、 Group ドライバが必ず実装しなければならないメソッドの 抽象メソッドの定義が含まれています。

ドライバの設定

Group ドライバは必要に応じて追加のドライバをロードできます。一般的には、 ACL ドライバがこれにあたります。 しかし、実装次第では、カスタムタイプのドライバを導入して利用することも可能です。そのためには、ドライバクラスに次の構造を追加してください:

// SimpleAcl という ACL ドライバを、この Group ドライバのロード時にオートロード
	protected $config = array(
		'drivers' => array('acl' => array('SimpleAcl'))
	);

汎用メソッド

汎用メソッドは、 Group 基底ドライバに定義されており、継承によりすべての Auth Group ドライバから使うことができます。 これらのメソッドが提供する関数には、グループ間のやり取りを行ったり、アクセス権を確認するものがあります。

クラスに定義されているメソッドのうち、ドキュメントに記載されていないものは内部で利用されてるものなので、直接呼び出さないようにしてください。

get_id()

ドライバのユニーク id を返します。ドライバを区別したり、特定のドライバのインスタンスを選択するために使います。

静的 No
パラメータ なし
返り値 ドライバ id の文字列
// 'simpleauth' を返す
$id = Auth::group()->get_id();

set_config($key, $value)

ドライバの config の値を設定します。

静的 No
パラメータ
パラメータ 規定値 説明
$key 必須 config のキー名
$value required config のキーの値
返り値 void
// simplegroup ドライバの config に値を設定する
Auth::group()->set_config('key', 'value');

get_config($key, $default = null)

ドライバの config の値を取得します。

静的 No
パラメータ
パラメータ 規定値 説明
$key 必須 config のキー名
$default null 要求したキーに値がなかったときに返されるデフォルト値
返り値 mixed
// simplegroup ドライバ の config の値を取得し、値がなければ false を返す
$key = Auth::instance(simplegroup)->get_config('key', false);

has_access($condition, $driver, $group = null)

has_access メソッドは、定義済みの ACL ドライバ を使って、ユーザがその状況に対してアクセス権を持っているか確認します。

静的 No
パラメータ
パラメータ 規定値 説明
$condition 必須 ロケーションとそこでの求められる権限を文字列、 または配列で受け取る
$driver 必須 問い合わせる ACL ドライバ、 null ならロードされているすべてのドライバを使ってアクセス権を確認する。
$group null オプションで、定義済みのすべての Group ドライバに代わり、与えられた Group ドライバのみをチェックする。
返り値 論理型、アクセス権が承認された場合 true 、そうでなければ false を返す。
// ユーザがコメント可能か確認
if ( ! Auth::group()->has_access('comments.create'), null)
{
	Response::redirect('no_admin');
}

// ユーザがコメントの更新と変更が可能かも確認
Auth::group()->has_access('comments.[update,delete]', null);

// 静的に呼び出す (デフォルト Group ドライバのインスタンスを利用)
Auth::has_access('comments.[update,delete]');

// 上記を、文字列ではなく配列で
Auth::group()->has_access(array('comments', array('update', 'delete')), null);

抽象メソッド

どの自作 Group ドライバも、以下のメソッドを用意しなければなりません。また、ここで記載されたとおりに値を返さなければなりません。

member($group, $specific = null)

ユーザが与えられたグループのメンバかどうか、ロード済みのすべての Group ドライバ、 もしくは第 2 引数で指定した特定の Group ドライバについて確認します。

静的 はい
パラメータ
パラメータ 規定値 説明
$group 必須 グループ id
$specific null null で全ドライバ、もしくは、ひとつ以上のドライバ id (文字列、または、文字列の配列)で特定のドライバをチェック。
返り値 論理型、(渡されたドライバのうち)ひとつでもユーザがメンバになっているかどうか。
if ( ! Auth::member(100))
{
	Response::redirect('no_admin');
}

// 特定のドライバ
Auth::member(1, 'simplegroup');

// 複数のドライバ
Auth::check(0, array('simplegroup', 'genericgroup'));

get_name($group)

グループの表示名を取得します。

静的 はい
パラメータ
パラメータ 規定値 説明
$group null グループの表示名を取得したいドライバの名前。
返り値 mixed 。取得されたグループの表示名を、グループが存在しない場合は false を、返す。
// admin グループの表示名を取得
Auth::group()->get_name('admin');