2017 © Pedro Peláez
 

cakephp-plugin acl

Acl plugin for CakePHP

image

abreu1234/acl

Acl plugin for CakePHP

  • Thursday, October 29, 2015
  • by abreu1234
  • Repository
  • 4 Watchers
  • 2 Stars
  • 89 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

CakePHP Acl Plugin

License, (*1)

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)

Instalando via composer

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]);

Criando tabelas

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

Carregando complemento Auth

Você deve iniciar o complemento Auth do cakephp, (*8)

(Auth cakephp) (Auth tutorial), (*9)

Configuração básica

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']]);

Sincronizar controllers de plugins

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)

Ignorando pastas e arquivos

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']
            ]
        ]
]);

Dando permissão

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']
      ],

Método isAuthorized

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;
    }

Sincronizando

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)

Gerenciando permissões

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)

The Versions

29/10 2015

dev-master

9999999-dev https://github.com/abreu1234/acl

Acl plugin for CakePHP

  Sources   Download

MIT

The Requires

 

The Development Requires