Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/07/2009, 08:57
daniko013
 
Fecha de Ingreso: junio-2009
Mensajes: 7
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Usar Zend Acl con Zend Framework

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.