Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/07/2011, 13:40
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Algunas dudas sobre Zend_Acl

1.- En la documentación viene mejor explicado (en Inglés), pero respecto a tu duda 1, solo afecta el orden si vas a heredar, es decir no puedes agregar un Rol después de otro si vas a ocupar ese Rol para heredar, por ejemplo:
Código PHP:
Ver original
  1. // mal
  2. $Staff = new Zend_Role('Staff', $User);
  3. $User = new Zend_Role('User');
  4.  
  5. // bien
  6. $User = new Zend_Role('User');
  7. $Staff = new Zend_Role('Staff', $User);

2.- Es correcto es la forma de agregarlos con addRole o creando antes el Role y luego agregarlo.

3.- El último valor es el permiso a verificar, recuerda que Zend_Acl trabaja sobre accesos a recursos con sus respectivos permisos.

4.- Son los permisos específicos para el recurso, por ejemplo:
Código PHP:
Ver original
  1. // 'Guest' es el usuario basico no hereda de nadie
  2. $Acl->allow('Guest', 'news', 'view');
  3. // 'User' es el usuario registrado
  4. $Acl->allow('User', 'news', array('view', 'comment'));
  5. // Como Staff hereda de User, puede aparte de 'view' y 'comment' también moderar comentarios
  6. $Acl->allow('Staff', 'news', 'delete_comments');
  7. // Admin no hereda de nadie es un rol especial y tiene todos los permisos (por eso no le pasamos el tercer parametro)
  8. $Acl->allow('Admin', 'news');
Tu puedes manejar un control muy granular sobre que recursos pueden trabajar, es esa la ventaja de los recursos, en un recurso es probable que puedan hacer algo pero en el otro no.

5.- Con usar isAllowed es más que suficiente, ya que este regresa un booleano (true|false).

Saludos.