A skeleton for creating applications with CakePHP 3.x. The skeleton has been preloaded with the Acl, AclManager, Markdown and Documents plugins. Manages groups, roles, users and ACL.
- The framework source code can be found here: cakephp/cakephp.
- The Acl plugin source code can be found here: cakephp/acl.
- The AclManager plugin source code can be found here: ivanamat/cakephp3-aclmanager.
- The Markdown plugin source code can be found here: ivanamat/cakephp3-markdown.
- The Documents plugin source code can be found here: ivanamat/cakephp3-documents.
- Download Composer or update
composer self-update
. - Run
php composer.phar create-project --prefer-dist ivanamat/cakeapp [app_name]
.
If Composer is installed globally, run
composer create-project --prefer-dist ivanamat/cakeapp [app_name]
You should now be able to visit the path to where you installed the app and see the setup traffic lights.
Import the config/schema/cakephp.sql
file to your database.
Read and edit config/app.php
and setup the 'Datasources' and any other
configuration relevant for your application.
Uncomment $this->Auth->allow();
from initialize function on AppController
. This lets you create Groups, Roles and Users.
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authorize' => [
'Acl.Actions' => ['actionPath' => 'controllers/']
],
'loginAction' => [
'plugin' => false,
'controller' => 'Users',
'action' => 'login'
],
'loginRedirect' => [
'plugin' => false,
'controller' => 'Users',
'action' => 'index'
],
'logoutRedirect' => [
'plugin' => false,
'controller' => 'Users',
'action' => 'login'
],
'unauthorizedRedirect' => [
'controller' => 'Pages',
'action' => 'display',
'prefix' => false
],
'authError' => 'You are not authorized to access that location.',
'flash' => [
'element' => 'error'
]
]);
// Only for ACL setup
$this->Auth->allow();
}
Uncumment return true;
from isAuthorized function on AppController
. This allows you to access the Acl Manager plugin.
public function isAuthorized($user) {
// Only for ACL setup
return true;
// Admin can access every action
if (isset($user['role_id']) && $user['role_id'] === 1) {
return true;
}
// Default deny
return false;
}
- Now go to the Groups area and create your first group.
- Access Roles area and create a new role for the group you created. It is recommended to create the first role with the name 'Root'. The role you have created with id 1 will always have all permissions.
- Create a user with the group and role you just created.
- Log in on
/Users/login
as the user created, go to/AclManager
and click onRestore to default
to create ACOs and AROs automatically.
Comment $this->Auth->allow();
from initialize function and return true;
from isAuthorized function on AppController
.
public function initialize() {
parent::initialize();
...
// Only for ACL setup
// $this->Auth->allow();
}
public function isAuthorized($user) {
// Only for ACL setup
// return true;
...
}
Now you can start customizing your permissions and Develop your app. Do not forget to update the ACOs when creating new functions.
- Updated version requirement to 1.* for latest ivanamat/cakephp3-aclmanager.
- Updated version requirement to ~1.0 for latest cakephp/plugin-installer.
Iván Amat on GitHub
www.ivanamat.es