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

Algunas dudas sobre Zend_Acl

Estas en el tema de Algunas dudas sobre Zend_Acl en el foro de Zend en Foros del Web. Hola a todos, A raíz de otro tema estoy probando Zend_Acl por recomendación de GatroV , y la verdad es que soluciona con bastante soltura ...
  #1 (permalink)  
Antiguo 13/07/2011, 13:20
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 10 meses
Puntos: 261
Algunas dudas sobre Zend_Acl

Hola a todos,

A raíz de otro tema estoy probando Zend_Acl por recomendación de GatroV, y la verdad es que soluciona con bastante soltura lo que necesito.

Pero antes de montar todo el sistema de permisos, que es algo enrevesado. He leído la documentación de Zend, y algunos tutoriales, ejemplos y demás.

Pero me surgen algunas dudas en cuanto a como estructurarlo y la sintaxis (esto último no viene muy bien explicado en la documentación Zend, o por lo menos, si está me lo he saltado).

1- Al declarar los distintos roles o recursos, hay alguna diferencia en el orden en que se declaran?
Por ejemplo en la herencia múltiple de entre roles si toma en cuenta el orden para dar prioridad.

2- En la sintaxis veo que es así, no se si hay otra forma para declarar los roles.
Código PHP:
$acl->addRole(new Zend_Acl_Role
('ROL') [ , 'ROL_HEREDADO' ó $array_ROLES_HEREDADOS] ); 
3 - En el caso de la sintaxis de "isAllowed" que ponen 3 valores, el último que es?
Código PHP:
$acl->isAllowed('ROL''RECURSO''QUE_ES_ESTE?') ?
 
0

4 - He visto en algunos tutoriales que hablan de Privilegios o permisos para los recursos, imagino que que en definitiva son subrecursos de subrecursos... o es otro tipo de permiso complementario.
Código:
...
Recurso: son las zonas en las que se puede dividir 
la aplicación. Podría ser: editorial, marketing, administracion, …

Subrecursos: son los componentes de los Recursos. Como en 
forma de árbol, son los hijos de los Recursos, y solamente tiene a un 
Recurso como padre.

Permisos: son las acciones concretas que se pueden hacer sobre 
un Subrecurso. 
5 - Y por último, es correcto usarlo así de básico, o se recomienda de otra forma que sea más efectiva?
Código PHP:
if ($acl->isAllowed('ROL''RECURSO') ? 0)
{
    
// Contenido a mostrar

Como os comentaba antes, he visto tutoriales muy elaborados y demás, pero se han olvidado de explicar lo básico...

Gracias de antemano.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #2 (permalink)  
Antiguo 13/07/2011, 13:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 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.
  #3 (permalink)  
Antiguo 13/07/2011, 14:39
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 10 meses
Puntos: 261
Respuesta: Algunas dudas sobre Zend_Acl

Hola GatorV, antes de nada quiero darle la gracias por pasar,

Me ha quedado todo claro excepto como declarar esos permisos. He visto que algunos casos ponen dos puntos tras el recurso, forma parte de los permisos esto también?

A ver si mas o menos es así:
Código PHP:
Ver original
  1. // Declara el Rol
  2. $acl->addRole(new Zend_Acl_Role('ROLE'));
  3.  
  4. //Declara el recurso
  5. $acl->addResource(new Zend_Acl_Resource('RECURSO:NO_SE_QUE_ES_ESTO','PERMISO_1'));
  6. $acl->addResource(new Zend_Acl_Resource('RECURSO:NO_SE_QUE_ES_ESTO','PERMISO_2'));
  7.  
  8. $acl->allow('ROLE', 'RECURSO', array('PERMISO_1', 'PERMISO_2'));
  9.  
  10. // Esto daría acceso a este recurso
  11. if ( $acl->isAllowed('ROL', 'RECURSO') ) {
  12.  
  13.     $acl->isAllowed('ROL', 'RECURSO', 'PERMISO_1') ? 'Accede' : 'No accede' ;
  14.  
  15.     $acl->isAllowed('ROL', 'RECURSO', 'PERMISO_2') ? 'Accede' : 'No accede' ;
  16. }

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #4 (permalink)  
Antiguo 13/07/2011, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Algunas dudas sobre Zend_Acl

Eso es porque generalmente se habla de la integración de Zend_Acl con el MVC de Zend, entonces cuando hablas de acceso a modulos/controllers, una forma de automatizar el chequeo es usando el modulo y controller como nombre del recurso, en este caso module:controller, es por eso que se usa eso.

Saludos.
  #5 (permalink)  
Antiguo 13/07/2011, 14:59
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 10 meses
Puntos: 261
Respuesta: Algunas dudas sobre Zend_Acl

Ok, haré algunas pruebas a ver que tal se da.

Gracias de nuevo.

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #6 (permalink)  
Antiguo 13/07/2011, 18:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Algunas dudas sobre Zend_Acl

También se dan casos, de module:controller:action, por si vez ejemplos ya sabes que significa el último.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 14/07/2011, 01:27
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 10 meses
Puntos: 261
Respuesta: Algunas dudas sobre Zend_Acl

Cita:
Iniciado por abimaelrc Ver Mensaje
También se dan casos, de module:controller:action, por si vez ejemplos ya sabes que significa el último.
Hola abimaelrc,

Pues también me viene bien saberlo, lo había visto en algún ejemplo, pero no quise preguntar tantos detalles. Demasiado es lo que os esmeráis en aportar soluciones detalladas a nuestras dudas

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight

Etiquetas: dudas, frameworks-y-php-orientado-a-objetos
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 18:40.