Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/07/2009, 08:57
daniko013
 
Fecha de Ingreso: junio-2009
Mensajes: 7
Antigüedad: 15 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 $authZend_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.