Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2010, 08:44
ramonw
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
Problema con zend navigation y acl.

Hola amigos tengo un problema en un sistema que he creado en zend.
La cuestion es asi, he creado un menu con zend_navigation y determinadas urls se tienen que ver o no segun el rol del usuario.
Tengo 3 roles: 'invitado', 'usuario' y 'administra'.
El problema es que en los links que tengo restricciones para "invitado", y si se debieran ver con "usuario", no se ven (si se ven con "administra").
Aqui les pongo el codigo, como verán
Código PHP:
Ver original
  1. class Mis_Acl extends Zend_Acl
  2. {
  3.     public function __construct(Zend_Auth $auth)
  4.     {
  5.         //$roleGuest = new Zend_Acl_Role('guest');
  6.  
  7.         $this->add( new Zend_Acl_Resource( 'default:index' ) );
  8.         $this->add( new Zend_Acl_Resource( 'moduno:index' ) );
  9.        
  10.  
  11.         $this->addRole( new Zend_Acl_Role( 'invitado' ) );
  12.         $this->addRole( new Zend_Acl_Role( 'usuario' ), 'invitado' );
  13.         $this->addRole( new Zend_Acl_Role( 'administra' ), 'usuario' );
  14.  
  15.         // Guest may only view content (privileges)
  16.         $this->allow( 'invitado', 'default:index','index');
  17.         $this->allow( 'invitado', 'default:index','pruebaform');
  18.         $this->allow( 'invitado', 'default:index','jqueryprueba');
  19.         $this->allow( 'invitado', 'default:index','atras');
  20.         $this->allow( 'invitado', 'default:index','login');
  21.         $this->allow( 'usuario', 'default:index','autorizado');
  22.         $this->allow( 'invitado', 'default:index','logout');
  23.         $this->allow( 'invitado', 'moduno:index','index');
  24.         $this->allow( 'invitado', 'moduno:index','segundo');
  25.         $this->allow( 'invitado', 'moduno:index','librovisitas');
  26.         $this->allow( 'invitado', 'moduno:index','comentarios');
  27.         $this->allow( 'invitado', 'moduno:index','octubre');
  28.        
  29.         $this->allow( 'administra'); // unrestricted access
  30.     }
  31. }


navigation.xml
Código PHP:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configdata>
  3. <nav>
  4. <home>
  5.                         <label>Home</label>
  6.                         <module>default</module>
  7.                         <controller>index</controller>
  8.                         <action>index</action>
  9.                         <pages>
  10.                             <autoriza>
  11.                                 <label>Autorizado</label>
  12.                                 <module>default</module>
  13.                                 <controller>index</controller>
  14.                                 <action>autorizado</action>
  15.                                          <resource>default:index</resource>
  16.                     <privilege>usuario</privilege>
  17.                             </autoriza>
  18.                             <logout>
  19.                                 <label>Logout</label>
  20.                                 <module>default</module>
  21.                                 <controller>index</controller>
  22.                                 <action>logout</action>
  23.                                         <resource>default:index</resource>
  24.                                 <privilege>usuario</privilege>
  25.                             </logout>
  26.                         </pages>
  27. </home>
  28. <moduno>
  29.            <label>Moduno</label>
  30.            <module>moduno</module>
  31.            <controller>index</controller>
  32.            <action>index</action>
  33.            <pages>
  34.              <segundo>
  35.                 <label>Segundo</label>
  36.                 <module>moduno</module>
  37.                 <controller>index</controller>
  38.                 <action>segundo</action>
  39.             </segundo>
  40.            <librovisitas>
  41.                <label>Librovisitas</label>
  42.                <module>moduno</module>
  43.                 <controller>index</controller>
  44.                 <action>librovisitas</action>
  45.            </librovisitas>
  46.            <comentarios>
  47.                <label>Comentarios</label>
  48.                 <module>moduno</module>
  49.                 <controller>index</controller>
  50.                 <action>comentarios</action>
  51.           </comentarios>
  52.            <octubre>
  53.                <label>Octubre</label>
  54.                 <module>moduno</module>
  55.                 <controller>index</controller>
  56.                 <action>octubre</action>
  57.          </octubre>
  58.          </pages>
  59.       </moduno>
  60. </nav>
  61. </configdata>
Como verán en los privilegios del acl el action "autorizado" esta permitido para "usuario", pero en el menú no se ven esos links.

Si alguien que ha trabajado con el navigation entiende el problema, le agradezco la ayuda, saludos.

Última edición por ramonw; 11/11/2010 a las 18:53