Skip to content
これは pieceofcake2/acl_extras のドキュメントです。pieceofcake2/cakephp 用の CakePHP 2.x プラグインです。 このフォークについて

Acl Extras ドキュメント ​

Acl Extras は、DbAcl のレコードの管理を助けるコンソールシェルを提供します。主な目的は、 すべてのコントローラーとアクションの ACO ノードを生成することです。壊れた ACO ツリーや ARO ツリーの検証と修復もできます。 pieceofcake2/cakephp の上で動作します。

インストール ​

Composer でプラグインをインストールします。

bash
composer require pieceofcake2/acl_extras

プラグインのタイプは cakephp-plugin なので、composer/installers によってプラグインディレクトリに インストールされます。正しい場所にインストールされるように、アプリケーションの composer.json で installer-paths を設定してください。

レイアウトinstaller-paths
モダン (config/、src/、templates/、plugins/)"plugins/{$name}/": ["type:cakephp-plugin"]
レガシー (app/Config/、app/Plugin/)"app/Plugin/{$name}/": ["type:cakephp-plugin"]

config/bootstrap.php (レガシーレイアウトでは app/Config/bootstrap.php) でプラグインを読み込みます。 すでに CakePlugin::loadAll() を使っている場合は不要です。

php
CakePlugin::load('AclExtras');

シェルの要件 ​

シェルを使うには、config/core.php (レガシーレイアウトでは app/Config/core.php) で DbAcl が設定されている必要があります。

php
Configure::write('Acl.classname', 'DbAcl');

また、ACL のテーブルが存在する必要があります。

bash
bin/cake schema create DbAcl

アプリケーションがレガシーのディレクトリレイアウトの場合は、bin/cake の代わりに app/Console/cake を使ってください。

コマンド ​

コマンドの一覧は次のように表示します。

bash
bin/cake AclExtras.AclExtras -h
bash
# Add new ACOs for new controllers and actions. Does not remove nodes from the ACO table.
bin/cake AclExtras.AclExtras aco_update

# Perform a full sync on the ACO table. Also removes orphaned ACOs that no longer have a
# matching controller or action.
bin/cake AclExtras.AclExtras aco_sync

# Update or sync only one plugin
bin/cake AclExtras.AclExtras aco_sync --plugin MyPlugin

# Verify or recover the tree structure of the ACO or ARO tree
bin/cake AclExtras.AclExtras verify aco
bin/cake AclExtras.AclExtras recover aro
コマンド説明
aco_update新しいコントローラーとアクションの ACO を追加します。既存のノードはそのまま残ります。
aco_sync新しいコントローラーとアクションの ACO を追加し、存在しなくなったコントローラーとアクションの ACO を削除します。
verify aco|aroACO ツリーまたは ARO ツリーのツリー構造を検証します。
recover aco|aro壊れた ACO ツリーまたは ARO ツリーを修復します。

aco_update と aco_sync では、--plugin (-p) で 1 つのプラグインだけを処理できます。

コマンドが失敗した場合、たとえば存在しないプラグインを指定した場合やツリーが不正な場合、 シェルはエラーコードで終了します。

ACO ツリー ​

aco_update と aco_sync は、controllers という名前のルートノードの下に、public な アクションごとに 1 つの ACO を作成します。

controllers
├── Posts
│   ├── index
│   ├── view
│   └── ...
└── ContactManager          (a plugin)
    └── Contacts
        ├── index
        └── ...

AppController と <Plugin>AppController には、それ自身のノードは作成されません。基底クラス Controller のメソッド、名前が _ で始まるメソッド、コントローラーのイベントコールバックは スキップされます。コントローラーが AppController から継承した public メソッドは、 各コントローラーに追加されます。

コントローラーの設定 ​

シェルが作成した ACO がリクエストごとにチェックされるように、AuthComponent で Actions 認可を使うように設定します。src/Controller/AppController.php (レガシーレイアウトでは app/Controller/AppController.php) で次のようにします。

php
class AppController extends Controller
{
    public $components = [
        'Auth' => [
            'authorize' => [
                'Actions' => ['actionPath' => 'controllers/'],
            ],
        ],
    ];
}

コードから ACO を更新する ​

シェルはプラグインの AclExtras クラスを使っています。このクラスは、たとえば管理用の コントローラーなど、独自のコードからも使えます。

php
App::uses('AclExtras', 'AclExtras.Lib');

$aclExtras = new AclExtras();
$aclExtras->startup($this);
$aclExtras->aco_sync();

コントローラーに Session コンポーネントがある場合、メッセージはフラッシュメッセージとして 設定されるので、コントローラーには Flash コンポーネントも必要です。

クレジット ​

Acl Extras は、もともと Mark Story によって作成されました。

由来 ​

このパッケージは markstory/acl_extras (Packagist では markstory/acl_extras、アップストリームの最終バージョンは 1.2.1) の メンテナンスされたフォークで、元の作者は Mark Story です。 pieceofcake2 が、モダンな PHP で動く CakePHP 2 向けに メンテナンスしています。オリジナルからの変更点は フォーク以降のコミット履歴 で確認できます。

著作権とライセンスについては LICENSE を参照してください。Cake Software Foundation とは関係ありません。