Auth パッケージ

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

Auth_Login_Driver

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

ドライバの設定

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

// この Login ドライバが読み込まれたとき Simplegroup Group ドライバはオートロードされる
// このドライバが持つ追加のユーザレコードフィールドの getter を定義
	protected $config = array(
		'drivers' => array('group' => array('Simplegroup')),
		'additional_fields' => array('profile_fields'),
	);

静的インターフェイス

使いやすいように、Auth パッケージは Login ドライバのパブリックメソッドの静的インタフェースを提供します。 従って、Login 基底ドライバは、Group および ACL ドライバでこれらのメソッドへの静的アクセスを提供するメソッド member()has_access() を定義します。

静的インターフェースで使用するには

// 'simpleauth' を返す
$id = Auth::get_id();

代わりに

// 'simpleauth' を返す
$id = Auth::instance()->get_id();

複数のアクティブなログインドライバに静的インタフェースを割り当てることができないように、 Auth 設定の "verify_multiple_logins" が false に設定されている場合にのみ使用可能です!

汎用メソッド

汎用メソッドは、 Login 基底ドライバに定義されており、継承によりすべての Auth Login ドライバから使うことができます。 これらのメソッドが提供する関数には、インスタンスを生成・取得したり、 config の値を設定・取得したり、パスワードをハッシュ値にする汎用メソッドや ACLGroup ドライバにアクセスするものがあります。

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

get_id()

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

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

set_config($key, $value)

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

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$key 必須 config のキー名
$value 必須 config のキーの値
返り値 void
// config に値を設定
Auth::instance()->set_config('key', 'value');

get_config($key, $default = null)

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

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

guest_login()

ドライバがゲストログイン(認証されないゲストユーザ)を許可しているかどうかを返す。

静的 いいえ
パラメータ なし
返り値 論理型
// デフォルトインスタンスがゲストログインをサポートしているか
if (Auth::instance()->guest_login())
{
	// このドライバはゲストログインをサポートしています!
}

デフォルトでは、このメソッドは 'false' を返します。ゲストログインをサポートしたいときは、 このメソッドを拡張クラスでオーバーライドしてください。

get_user_array(Array $additional_fields = array())

現在ログイン中のユーザの配列を少なくとも表示名とメールアドレスを含んで返します。 追加フィールドは、ドライバの config で設定するか、 $additional_fields 配列を通じてリクエストできます。 ただし、追加フィールドが getter メソッドで取得できるように get_user_フィールド名() メソッドが ドライバ内になければなりません。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$additional_fields array() 取得するフィールド名
返り値 配列
// デフォルトインスタンスのメソッドを呼ぶ
$user = Auth::instance()->get_user_array();

// 特定のインスタンスのメソッドを呼ぶ
$user = Auth::instance('simpleauth')->get_user_array();

// 静的な呼び出し("verify_multiple_logins" が false の場合)
$user = Auth::get_user_array();

'additional_fields' をドライバの設定配列に定義することで、このメソッドを呼び出したときに追加したフィールドをデフォルトで返り値に含めるようにできます。

hash_password($password)

渡されたパスワードのハッシュ値を base64 エンコードで返します。このメソッドは非常にセキュアな pbkdf2 ハッシュアルゴリズムを使用しています。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$password 必須 ハッシュ化するパスワード
返り値 文字列
// ユーザのパスワードをハッシュ化
$password = Auth::instance()->hash_password($password);

抽象メソッド

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

perform_check()

内部のクラスメソッドで、現在のユーザについて認証済みセッションがあるかをチェックします。自作ドライバでは、このメソッドをどう定義するかを決める必要があります。

静的 いいえ
パラメータ なし
返り値 論理型、認証済みのユーザセッションがある場合 true 、そうでなければ false

このメソッドは Auth::check() から呼ばれます。アプリケーションから直接呼び出さないようにしてください。

validate_user()

validate_user メソッドはログインを検証します。自作ドライバでは、このメソッドがどう振る舞うかを決める必要があります。

静的 いいえ
パラメータ なし
返り値 mixed 。ユーザからのログインリクエストが失敗した場合、 false を返す必要があります。 true と評価されうるすべての返り値は検証に成功したものとして扱われます。

このメソッドをアプリケーションから呼び出すときは、 false 以外の返り値に何がくるか決めつけてはいけません!

login()

login メソッドはログインリクエストを扱います。リクエストを検証するために validate_user() 呼び出す必要があります。自作ドライバでは、このメソッドがどう振る舞うかを決める必要があります。

静的 いいえ
パラメータ なし
返り値 論理型。ログインが成功し場合、 true を、そうでなければ false を返す。

ゲストユーザをサポートする場合は、 false を返す前にゲストを設定する必要があります。

logout()

logout メソッドは現在ログイン中のユーザをログアウトさせます。自作ドライバでは、このメソッドがどう振る舞うかを決める必要があります。

静的 いいえ
パラメータ なし
返り値 論理型。ログアウトが成功し場合、 true を、そうでなければ false を返す。

ゲストユーザをサポートする場合は、 ログアウトの成功後にゲストを現在のユーザーとして設定する必要があります。

get_user_id()

get_user_id メソッドは、 ドライバ id の値、現在ログイン中のユーザの id を配列で返します。

静的 いいえ
パラメータ なし
返り値 mixed 。 ユーザがログイン中なら array(driver_id, user_id) 形式の配列を、そうでなければ false を返す。

ゲストユーザをサポートする場合は、 false ではなくゲストユーザーの user_id (ダミー) を配列とともに返してください!

get_groups()

get_groups メソッドは、現在ログイン中のユーザが属しているユーザグループを返します。

静的 いいえ
パラメータ なし
返り値 mixed 。ユーザがログイン中なら、 array(array(driver_id, group_id), array(driver_id, group_id), etc) 形式の配列を、そうでなければ false を返す。

ゲストユーザをサポートする場合は、 false ではなくゲストユーザーのグループの配列を返してください!

get_email()

get_email メソッドは、現在ログイン中のユーザに対応するメールアドレスを返します。

静的 いいえ
パラメータ なし
返り値 mixed 。 ユーザがログイン中ならメールアドレスを、現在のユーザにメールアドレスがない場合やログイン中のユーザがいない場合は false を返す。

ゲストユーザをサポートする場合は、ゲストユーザ用にメールアドレスを指定していないときに false を返すことを忘れずに!

get_screen_name()

get_screen_name メソッドは、現在ログイン中のユーザの表示名を返します。

静的 いいえ
パラメータ なし
返り値 mixed 。表示名の文字列を返す。ログイン中のユーザがいなければ false を返す。

ゲストユーザをサポートする場合は、 false ではなくゲストの表示名を返してください!