Ver Mensaje Individual
  #13 (permalink)  
Antiguo 06/11/2010, 09:32
harryems
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: zend ACL navigator modificar para no ver otros niveles

esa es prisamente la idea del ACL (acces control list)
Código PHP:
class Zend_View_Helper_LoggedInAs extends Zend_View_Helper_Abstract 
{
    public function 
loggedInAs ()
    {
        
$this->_acl = new Library_MyApp_Acl();
        
$roleZend_Auth::getInstance()->getIdentity()->role;      
        
$navContainerConfig = new Zend_Config_Xml('Application/Configs/navigation.xml''nav');
        
$navContainer       = new Zend_Navigation($navContainerConfig);
        
$this->view->navigation($navContainer);
        return 
$this->view->navigation()
                                        ->
setAcl($this->_acl)
                                        ->
setRole($role)  //aqui le pasas el rol y solo mostrara los permisos a los qe tiene derecho.
                                        
                                        
;
    }

yo uso para la asignacion de permisos un .ini, pero bien puedes usar xml.
un ejemplo seria.
Código PHP:
[roles]
Alumno             null
;maestro hereda de alumnodado que tienen todos los
accesos de alumno mas los propios
Maestro            
"Alumno"
;supervisor al heredar de maestro tiene todas las funciones de alumno
;y de maestro
Supervisor         
"Maestro"
;por lo regular el admin no hereda de nadie
admin              
null

[resources]
;
estos son tus controladores y si tu aplicacion es modular
el modulo va del lado derecho,sino puede dejar "Default"
Auth               "Default"
index              "Default"
Site               "Default"
error              "Default"
Users              "Admin"

;las acciones correspondientes a cada controlador
[subresources]
;
AUTH
login              
"Auth"
logout             "Auth"

;SITE
Materias           
"Site"
AltaAlumnos        "Site"
AltaMaestros       "Site"
ALtaMaterias       "Site"

aqui van los permisos a los que se asigna a cada role

[Alumno]
 
Materias.allow     =null
[Maestro]
 
AltaAlumnos.allow  =null

[Supervisor]
 
ALtaMaterias.allow =null
 AltaMaestros
.allow =null
 
;como supervisor hereda de maestro el supervisor por default podria dar de alta alumnos
 
;pero digamos que eso no es lo que queremosentonces podemos negarle ese recurso en especifico
 AltaAlumnos
.denied null

[admin];de esta forma admin aunque no hereda de nadietiene derecho a todos
;los recursos.
allow              null 
espero te sea de ayuda, es solo un primer acercamiento, ademas de que lo genere al vuelo, asi que no creo que funcione de entrada, pero repito es solo para darte una idea de como funciona.

saludos.