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を使ったログイン機能はこちらを参照