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 originalclass Mis_Acl extends Zend_Acl
{
public function __construct(Zend_Auth $auth)
{
//$roleGuest = new Zend_Acl_Role('guest');
$this->add( new Zend_Acl_Resource( 'default:index' ) );
$this->add( new Zend_Acl_Resource( 'moduno:index' ) );
$this->addRole( new Zend_Acl_Role( 'invitado' ) );
$this->addRole( new Zend_Acl_Role( 'usuario' ), 'invitado' );
$this->addRole( new Zend_Acl_Role( 'administra' ), 'usuario' );
// Guest may only view content (privileges)
$this->allow( 'invitado', 'default:index','index');
$this->allow( 'invitado', 'default:index','pruebaform');
$this->allow( 'invitado', 'default:index','jqueryprueba');
$this->allow( 'invitado', 'default:index','atras');
$this->allow( 'invitado', 'default:index','login');
$this->allow( 'usuario', 'default:index','autorizado');
$this->allow( 'invitado', 'default:index','logout');
$this->allow( 'invitado', 'moduno:index','index');
$this->allow( 'invitado', 'moduno:index','segundo');
$this->allow( 'invitado', 'moduno:index','librovisitas');
$this->allow( 'invitado', 'moduno:index','comentarios');
$this->allow( 'invitado', 'moduno:index','octubre');
$this->allow( 'administra'); // unrestricted access
}
}
navigation.xml
Código PHP:
Ver original<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>
<home>
<label>Home</label>
<module>default</module>
<controller>index</controller>
<action>index</action>
<pages>
<autoriza>
<label>Autorizado</label>
<module>default</module>
<controller>index</controller>
<action>autorizado</action>
<resource>default:index</resource>
<privilege>usuario</privilege>
</autoriza>
<logout>
<label>Logout</label>
<module>default</module>
<controller>index</controller>
<action>logout</action>
<resource>default:index</resource>
<privilege>usuario</privilege>
</logout>
</pages>
</home>
<moduno>
<label>Moduno</label>
<module>moduno</module>
<controller>index</controller>
<action>index</action>
<pages>
<segundo>
<label>Segundo</label>
<module>moduno</module>
<controller>index</controller>
<action>segundo</action>
</segundo>
<librovisitas>
<label>Librovisitas</label>
<module>moduno</module>
<controller>index</controller>
<action>librovisitas</action>
</librovisitas>
<comentarios>
<label>Comentarios</label>
<module>moduno</module>
<controller>index</controller>
<action>comentarios</action>
</comentarios>
<octubre>
<label>Octubre</label>
<module>moduno</module>
<controller>index</controller>
<action>octubre</action>
</octubre>
</pages>
</moduno>
</nav>
</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.