CakePHP Acl Plugin
, (*1)
Proyecto basado en el proyecto: (https://packagist.org/packages/abreu1234/acl)
Este proyecto es un de Fork de https://github.com/abreu1234/acl
Todo el reconocimiento al trabajo hecho por el usuario abreu1234, (*2)
El plugin para el manejo de ACL en aplicaciones CakePHP., (*3)
Instalando via composer
Usted puede instalar este plugin usando el composer
[Composer] (http://getcomposer.org). Agregue la siguiente dependencia en
su composer.json
file:, (*4)
"require": {
"carlose119/acl": "dev-master"
}
y ahora ejecute en su terminal php composer.phar update
, (*5)
Cargue el plugin añadiendo la siguiente línea en config\bootstrap.php
:, (*6)
Plugin::load('Acl', ['bootstrap' => false, 'routes' => true]);
Creando tablas
Para crear las tablas necesarias para el plugin usando Migrations
ejecute el siguiente comando en su terminal:, (*7)
bin/cake migrations migrate -p Acl
Cargando complemento Auth
Debe iniciar el complemento Auth
del cakephp, (*8)
(Auth cakephp)
(Auth tutorial), (*9)
Configuración básica
Para cargar el complemento usted debe agregar el nombre de su controlador de usuarios
en Controller\AppController.php
de su aplicación, (*10)
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users']]);
Si utiliza grupos agregar el nombre del controlador de grupo también, (*11)
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users','group'=>'Groups']]);
Sincronizar controladores de plugins
Para sincronizar los controllers de plugins basta con añadir la configuración a índice plugins
, (*12)
$this->loadComponent('Acl.Acl',
[
'controllers' =>['user'=>'Users','group'=>'Groups'],
'plugins' => ['PluginName']
]
);
Por defecto este plugin sincronizará los controladores, (*13)
Configurar los campos de Autenticación
Para configurar campos de autenticación distintos a lo que utiliza el CakePhp por defecto, (*14)
$this->loadComponent('Acl.Acl',
[
'authenticate' => [
'username' => 'email',
'password' => 'password'
],
]
);
Ignorar carpetas y archivos
Para omitir alguna carpeta o archivo durante la sincronización basta con añadir la configuración el índice ignore
con la siguiente sintaxis Prefixo->Pasta/Arquivo->Action
. Para omitir todos los prefijos o carpetas de un prefijo
adicione *
, (*15)
$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 permiso
Para dar permiso a algún controlador sin necesidad de la base de datos
agregue las líneas siguientes., (*16)
$this->loadComponent('Acl.Acl', [
'authorize' => [
'/' => [
'Users' => ['index'],
]
],
'controllers' =>['user'=>'Users']
]);
Utilizar el índice authorize
con la siguiente sintaxis Prefixo->Controller->Action
en el ejemplo anterior estando dando permiso al Controller User
e Action index
.
Para la aplicación raíz sin prefijo utilizar /
, (*17)
Si necesita autorizar un controlador dentro de un prefijo usar el nombre del prefijo después de /
, (*18)
$this->loadComponent('Acl.Acl', [
'authorize' => [
'/' => [
'Users' => ['index'],
],
'/Admin' => [
'Users' => ['add'],
]
],
'controllers' =>['user'=>'Users']
]);
En el ejemplo anterior estamos dando permiso al Controlador User
y Actionadd
del prefijo Admin
, (*19)
Si necesita autorizar un plugin utilizar la siguiente sintaxis Plugin.Prefix
user /
para la raíz del plugin, (*20)
$this->loadComponent('Acl.Acl', [
'authorize' => [
'/' => [
'Users' => ['index'],
],
'/Admin' => [
'Users' => ['add'],
],
'Acl./' => [
'Permission' => ['index','synchronize'],
'UserGroupPermission' => ['index','getPermission','addAjax']
],
],
'controllers' =>['user'=>'Users']
]);
El ejemplo de arriba por seguridad sólo utilice hasta que haya agregado permisos a algún usuario o grupo.
Después de quitar las líneas, (*21)
'Acl./' => [
'Permission' => ['index','synchronize'],
'UserGroupPermission' => ['index','getPermission','addAjax']
],
Método isAuthorized
Para realizar la validación del usuario o grupo, utilice el método isAuthorized del complemento Auth. Agregue en el
archivo AppController.php
el siguiente código., (*22)
public function isAuthorized($user)
{
if(!$this->Acl->check()) {
$this->Flash->error(__('User or group no access permission!'));
return false;
}
return true;
}
Sincronización
Para sincronizar los controllers y actions basta ir a la dirección: /acl/permission
hacer clic en el enlace de sincronización
es importante que el usuario tenga permiso de acceso al controlador Permission
y Actions index
y synchronize
, (*23)
Administrar permisos
Para gestionar los permisos de los usuarios o grupos basta con ir a la dirección: /acl/user-group-permission
Seleccione el usuario o el grupo y los permisos.
Para funcionar el usuario hay que haber sincronizado los permisos y tener permiso de acceso al usuario
controlador UserGroupPermission
y Actions index
, getPermission
y addAjax
, (*24)