ℹ️ The ACL Plugin is not actively maintained by the CakePHP core team. ℹ️ PR's to fix problems are welcome.
As a modern alternative please check out the Authentication and Authorization plugins.
A plugin for managing ACL in CakePHP applications.
You can install this plugin into your CakePHP application using composer.
The recommended way to install composer packages is:
composer require cakephp/acl
Then in your src/Application.php
:
public function bootstrap()
{
parent::bootstrap();
$this->addPlugin('Acl');
}
To create the ACL requires tables, run the following Migrations
command:
bin/cake migrations migrate -p Acl
Add the Acl
behavior to your table so it will automatically create an aco
whenever a new record is saved:
public function initialize(array $config)
{
parent::initialize($config);
$this->addBehavior('Acl.Acl', ['controlled']);
}
Before you can start using the behavior, you MUST add the parentNode()
method to the corresponding Entity
file or the AclBehavior
will not be able to determine the parent->child relationships. Also make make sure the method returns either null or a parent Model reference.
public function parentNode() {
return null;
}
If things went well you should now see an entry appearing in the
acos
database table whenever you save a new record.
Assuming you have PHPUnit installed system wide using one of the methods stated here, you can run the tests for the Acl plugin by doing the following:
- Copy
phpunit.xml.dist
tophpunit.xml
- Add the relevant database credentials to your phpunit.xml if you want to run tests against a non-SQLite datasource.
- Run
phpunit