SimpleAuth Acl

Auth パッケージのはじめにで書いたように、 認証システムはシステムに付属する 3 つの異なったドライバによって成り立っています。

SimpleAuth の ACL ドライバはロール(役割)駆動型であり、ACL 定義情報を simpleauth.php ファイルに保持しています。 これは、あるユーザがその名前のロールにアクセス可能かどうかというロジックを提供します。

設定

SimpleAuth の ACL ドライバは、グループ定義情報を simpleauth.php ファイルに保持しています。 ACL は特定のロールにリンクされたアクセス制限の集合として定義されています。それは多次元配列になっており、次のような構造を持っていなければいけません:

array(
    <role> => array(			// <role> はここで定義したいロールの名前
        <location> => array(		// <location> は定義したい ACL
            'right', 'otherright'	// この location でどのような権限を与えるか
    ),
),

必要なら複数の location (場所)を定義でき、それぞれの location に複数の権限を設定することができます。 Auth パッケージに付属する simpleauth.php 設定ファイルには、使用可能ないくつかの例が含まれています。

全てのユーザのアプリケーションへの一般的な権限を指定するには、 システム定義された特別なロール '#' を利用することができます。 例えば、全てのユーザがブログ記事とコメントの閲覧を許可されている場合は以下のようになります:

// 全ユーザのデフォルトロール
'#' => array(
    'blog' => array('read'),		// 'blog' を読込み可
    'comments' => array('read'),	// 'comments' を読込み可
),

特別な役割のために定義された location が 2 つあります。 一つは全てのアクセスを無効にするためのもので、もう一つは全てを許可するためのものです。後者は特に注意してく使って下さい!

// 特別なロール定義
'banned' => false,	// 'banned' ロールを持つユーザはすべてのアクセスが無効
'administrators' => true	// 'administrator' ロールを持つユーザは全てのアクセスが許可

            

クラスメソッド

has_access($condition)

has_access メソッドは、現在ログインしているユーザが与えられた location と権限を持っているかをチェックします。

静的 No
パラメータ
パラメータ 規定値 説明
$condition 必須 チェックしたいアクセス権限
返り値 boolean. ユーザがアクセス可能ならば true、そうでなければ false を返します。
// ユーザがブログ記事を読込み可能かチェックします
if (Auth::has_access('blog.read'))
{
    // ユーザがアクセス可能な場合のコード
}

// Auth の複数インスタンスを持っている場合は、インスタンスを通してメソッドを呼びます。
// 一度に複数の権限をチェックすることもできます。
if (Auth::instance('simpleauth')->has_access('blog.[read,write,delete]'))
{
    // ユーザが読み込み、書き込み、削除が可能な場合のコード
}

// 複数権限のチェックをするには、条件を配列に入れることもできます
if (Auth::has_access(array('blog' => array('read'), 'comments' => array('read')))
{
        // ユーザがブログとコメントの読み込みが可能な場合のコード
}