Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/02/2010, 08:40
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Ejemplo ACL con Clases

En tu tabla de usuarios tienes que tener un campo llamado "role" y sus posibles valores serian 'guest','user' y 'admin' por poner un ejemplo, cuando autentificas el usuario con Zend_Auth esta información debe ser guardada, ejemplo:

Código PHP:
Ver original
  1. //Despues de verificar los datos guardamos información del usuario
  2.                 //y nos aseguramos de tomar el campo role
  3.                 $identity = $authAdapter->getResultRowObject(array('id','user','role','email'));
  4.                 $authStorage = $auth->getStorage();
  5.                 $authStorage->write($identity);

Despues en el plugin "My_Plugins_Acl" obtenemos el rol del usuario desde el storage de Zend_Auth

Código PHP:
Ver original
  1. //Aquí es donde se obtiene el "role" del usuario, si este se logueo con
  2.         //Zend_Auth, recuperamos su identidad y verificamos el role, si no inicio
  3.         //sesion, le asignamos el "role" guest
  4.         $role = $this->_auth->hasIdentity() ? $this->_auth->getInstance()->getIdentity()->role : 'guest';
  5.  
  6.         //Posteriormente verificamos si el usuario tiene un role o si es visitante
  7.         if (!$this->_acl->isAllowed($role,$resource) && $role == 'guest') {
  8.                 //Acciones si el usuario es visitante o "guest"
  9.         }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 17/02/2010 a las 08:46