Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/06/2009, 09:21
Avatar de SergeMedina
SergeMedina
 
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Aplicacion Modular con Zend Framework

Tengo lo siguiente:

Un plugin del controller que me permite "cachar" el request que se hace a la aplicación, y saber si un "rol" tiene permitido usar un "recurso"

Código PHP:
<?php
/**
 * Description of Acl
 *
 * @author sergiom
 */
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 'DEFAULT';
        if(
$this->_auth->hasIdentity()) {
            
$userSession $this->_auth->getStorage()->read();
            
$role $userSession->Perfil;
        }

        
$resource $request->getModuleName();

        if(
$this->_acl->isAllowed($role$resource) && $role != 'DEFAULT') {
                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');
        }
    }
}
En mi bootstrap tengo lo siguiente:

Código PHP:
//....
protected function _initLoadAuth()
{
        
$front Zend_Controller_Front::getInstance();
        
$front->registerPlugin(new Plugin_Acl(Zend_Auth::getInstance(), new Default_Model_ListaAcceso()));
}
//... 
La implementación del ACL ya es por tu cuenta, es muy sencilla, únicamente tienes que añadir recursos, roles y permisos.

Me he basado en articulos:
http://blog.astrumfutura.com/archive...Revisited.html
http://weierophinney.net/matthew/arc...to-Models.html
__________________
I see dead pixels