Foros del Web » Programando para Internet » PHP » Zend »

Problema con zend navigation y acl.

Estas en el tema de Problema con zend navigation y acl. en el foro de Zend en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/11/2010, 08:44
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 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
  #2 (permalink)  
Antiguo 11/11/2010, 18:58
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Problema con zend navigation y acl.

Hola amigos, me contesto yo mismo... estaba confundiendo los privileges con los roles :).

Dejo la parte a corregir por si a alguien le puede servir... como ven en la etiqueta "privilege" estaba poniendo el rol y hay que poner el privilege segun esté en el Acl.
Código XML:
Ver original
  1. <autorizado>
  2.                                 <label>Autorizado</label>
  3.                                 <module>default</module>
  4.                                 <controller>index</controller>
  5.                                 <action>autorizado</action>
  6.                     <resource>default:index</resource>
  7.                     <privilege>autorizado</privilege>
  8.                             </autorizado>
  9.                                     <logout>
  10.                                 <label>Logout</label>
  11.                                 <title>La colcha de la lora</title>
  12.                                 <module>default</module>
  13.                                 <controller>index</controller>
  14.                                 <action>logout</action>
  15.                                 <resource>default:index</resource>
  16.                                         <privilege>logout</privilege>
  17.                             </logout>
Asi funciona perfecto.

Etiquetas: acl, navigation
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:31.