FuelPHPのSimpleAuthでACL(Access Control List)
FuelPHPのSimpleAuthのACLの概要は、以下のようになっています。
- ロールを設定ファイルで管理
- ユーザーではなく、グループに対しロールがひもづく
以下、設定例になります。
config
$ vi app/config/simpleauth.php
設定対象は『groups』と『roles』になります。
<?php ... // グループの設定 'groups' => array( /** * グループID => array( // グループIDはusersテーブルのgroupカラム * 'name' => '識別名', * 'role' => 'ロール名' * ) */ 1 => array( 'name' => 'Users', 'roles' => array('user') ) ), // 権限設定 'roles' => array( /** * ロール名 => array( * 'アクセス先(任意の文字列)' => '権限(任意の文字列)' * ) */ 'user' => array( 'blog' => array('read') ), /** * ワイルドカード * * ワイルドカードは未ログインユーザーもあてはまる為、 * 必要であれば、ログインチェックを別途行う必要があります */ '#' => array( 'comments' => array('read') ), /** * ロール名での指定 */ 'user' => false, // 指定のロール名は全てアクセス不可 'admin' => true, // 指定のロール名は全てアクセス許可 ),
Controller
controllerでは『has_access』を使用し、権限チェックを行います。
<?php ... // blogのread権限があるかどうか if (Auth::has_access('blog.read')) { // OK } else { // NG } // まとめて記述したい場合 // 下記の場合、read/write/delete全ての権限があるユーザーがOKになります if (Auth::has_access('blog.[read,write,delete]')) { // OK } else { // NG }
SimpleAuthを使ったログイン機能はこちらを参照