Hola te voy a poner el codigo que estoy utilizando:
Plugin_Acl.php
Código PHP:
class Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
protected $_acl = null;
protected $_auth = null;
public function __construct(Zend_Auth $auth, Zend_Acl $acl)
{
$this->_acl = $acl;
$this->_auth = $auth;
}
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$role = 'guest';
if($this->_auth->hasIdentity()) {
$userSession = $this->_auth->getStorage()->read();
$role = $userSession->rol;
}
$resource = $request->getModuleName();
if($this->_acl->isAllowed($role, $resource) && $role != 'guest') {
return true;
//es permitido el usuario a ver el modulo requerido.
} else {
if($resource != 'default'){
//Mediante este parametro veo si mostrare un mensaje de error
$request->setParam('error', true);
}
$request->setModuleName('default')
->setControllerName('index')
->setActionName('index');
}
}
}
donde rol es una cmpo de mi tabla usuario.
My_Acl.php
Código PHP:
class My_Acl extends Zend_Acl
{
public function __construct(Zend_Auth $auth)
{
// Add Resources
// Resource #1: Default Module
$this->add(new Zend_Acl_Resource('default'));
// Resource #2: Admin Module
$this->add(new Zend_Acl_Resource('admin'));
// Add Roles
// Role #1: Guest
$this->addRole(new Zend_Acl_Role('guest'));
// Role #2: Author (inherits from Guest)
$this->addRole(new Zend_Acl_Role('author'), 'guest');
// Assign Access Rules
// Rule #1 & #2: Guests can access Default Module (Author inherits this)
$this->allow('guest', 'default');
// Rule #3 & #4: Authors can access Admin Module (Guests denied by default)
$this->allow('author', 'admin');
}
}
el modelo lo tengo asi :
User.php
Código PHP:
class User extends Zend_Db_Table
{
protected $_name = 'users';
}
Ahora bien el resultado me sale lo siguiente:
Cita: Message: Resource 'default' not found
El codigo q me diste anteriormente no se donde ponerlo en el User.php y como jalarlo en el Plugin_Acl.php
Help me please.