dev-master
9999999-dev https://github.com/abreu1234/aclAcl plugin for CakePHP
MIT
The Requires
- php >=5.4.16
- cakephp/cakephp ~3.0
The Development Requires
Acl plugin for CakePHP
A plugin for managing ACL in CakePHP applications., (*2)
Plugin está em faze inicial de desenvolvimento, estou iniciando com o cakephp faz pouco tempo, favor enviar sugestões e críticas construtivas., (*3)
Você pode instalar este plugin usando o composer
composer. Adicionar a seguinte dependência em
seu composer.json
file:, (*4)
"require": { "abreu1234/acl": "dev-master" }
e agora rode em seu terminal php composer.phar update
, (*5)
Carregue o plugin adicionando a seguinte linha em config\bootstrap.php
:, (*6)
Plugin::load('Acl', ['bootstrap' => false, 'routes' => true]);
Para criar as tabelas necessárias para o plugin usando Migrations
rode o seguinte comando em seu terminal:, (*7)
bin/cake migrations migrate -p Acl
Você deve iniciar o complemento Auth
do cakephp, (*8)
(Auth cakephp) (Auth tutorial), (*9)
Para carregar o complemento você deve adicionar o nome do seu controller de usuários
em Controller\AppController.php
da sua aplicação, (*10)
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users']]);
Caso você utilize grupos adicionar o nome do controller de grupos também, (*11)
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users','group'=>'Groups']]);
Para sincronizar os controllers de plugins basta adicionar a configuração a índice plugins
, (*12)
$this->loadComponent('Acl.Acl', [ 'controllers' =>['user'=>'Users','group'=>'Groups'], 'plugins' => ['PluginName'] ] );
Por padrão o plugin este plugin irá sincronizar os controlelrs, (*13)
Para ignorar alguma pasta ou arquivo durante a sincronização basta adicionar a configuração o índice ignore
com a seguinte sintaxe Prefixo->Pasta/Arquivo->Action
. Para ignorar todos os prefixos ou pasta de um prefixo
adicione *
, (*14)
$this->loadComponent('Acl.Acl', [ 'controllers' =>['user'=>'Users','group'=>'Groups'], 'plugins' => ['PluginName'], 'ignore' => [ '*' => [ '.','..','Component','AppController.php','empty', '*' => ['beforeFilter', 'afterFilter', 'initialize'], 'Permission' => ['add'] ], 'Admin' => [ 'Users' => ['delete'] ] ] ]);
Para dar permissão para algum controller sem precisar do banco de dados adicione as seguintes linhas., (*15)
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ] ], 'controllers' =>['user'=>'Users'] ]);
Usar o índice authorize
com a seguinte sintaxe Prefixo->Controller->Action
no exemplo acima estando dando permissão para o Controller User
e Action index
.
Para aplicação raiz sem prefixo utilizar /
, (*16)
Caso precise autorizar um controller dentro de um prefixo usar o nome do prefixo depois da /
, (*17)
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ], '/Admin' => [ 'Users' => ['add'], ] ], 'controllers' =>['user'=>'Users'] ]);
No exemplo acima estamos dando permissão para o Controller User
e Action add
do prefixo Admin
, (*18)
Caso precise autorizar um plugin utilizar a seguinte sintaxe Plugin.Prefix
user /
para a raiz do plugin, (*19)
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ], '/Admin' => [ 'Users' => ['add'], ], 'Acl./' => [ 'Permission' => ['index','synchronize'], 'UserGroupPermission' => ['index','getPermission','addAjax'] ], ], 'controllers' =>['user'=>'Users'] ]);
Exemplo acima por segurança apenas utilize até você ter adicionado permissões para algum usuário ou grupo. Após remover as linhas, (*20)
'Acl./' => [ 'Permission' => ['index','synchronize'], 'UserGroupPermission' => ['index','getPermission','addAjax'] ],
Para fazer a validação do usuário ou grupo, use o método isAuthorized do complemento Auth. Adicione no
arquivo AppController.php
o seguinte código., (*21)
public function isAuthorized($user) { if(!$this->Acl->check()) { $this->Flash->error(__('User or group no access permission!')); return false; } return true; }
Para sincronizar os controllers e actions basta ir até o endereço: /acl/permission
e clicar no link de sincronização
é importante o usuário ter permissão de acesso ao controller Permission
e Actions index
e synchronize
, (*22)
Para gerenciar as permissões dos usuários ou grupos bastar ir até o endereço : /acl/user-group-permission
Selecionar o usuário ou grupo e a as permissões.
Para funcionar o usuário é preciso ter sincronizado as permissões e ter permissão de acesso ao
controller UserGroupPermission
e Actions index
, getPermission
e addAjax
, (*23)
Acl plugin for CakePHP
MIT