首页 > 解决方案 > 在客户助手中使用 Acl 组件

问题描述

我使用了 acl 组件,但我需要在视图中检查权限。创建一个组件,其中实例 acl 组件。

<?php 
namespace App\Controller\Component;

use Cake\Controller\Component;

class AccessComponent extends Component
{
     var $components = array('Acl'); 

     function checkHelper($aro, $aco, $action = "*")
     { 
         //Importa los componentes de ACL 
         App::import('Component', 'Acl'); 

         // Instancia una clase del componente
         $acl = new AclComponent(); 

         // returna el resultado del check
         return $acl->check($aro, $aco, $action); 
    }
} 

然后我需要将函数传递给 AccessHelper

<?php 
namespace App\View\Helper;

use Cake\View\Helper;
use Cake\Event\Event;
use Cake\ORM\TableRegistry;

class AccessHelper extends Helper
{ 
    // var $helpers = array("Session"); 
    var $Access; 
    //var $Auth; 
    // var $user; 

    function beforeRender(Event $event)
    { 
        App::import('Component', 'AccessComponent'); 
        // App::uses('AccessComponent', 'Controller/Component');

        $this->Access = new AccessComponent(); 

        // var_dump($this->Access);

        // App::import('Component', 'Auth'); 

        //$this->Auth = new AuthComponent(); 
        //$this->Auth->Session = $this->Session; 
        //$user = $this->request->getSession()->read('Auth');
    } 

    function check($user, $aco, $action='*')
    { 
        if(empty($user)) return false; 

        // Returna el metodo del check definido en el componente Access
        return $this->Access->checkHelper($user['User']['id'], $aco, $action); 
    } 
}
?>

助手没有找到 AccessComponent。给我空...

标签: cakephpacl

解决方案


推荐阅读