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//Despues de verificar los datos guardamos información del usuario
//y nos aseguramos de tomar el campo role
$identity = $authAdapter->getResultRowObject(array('id','user','role','email')); $authStorage = $auth->getStorage();
$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//Aquí es donde se obtiene el "role" del usuario, si este se logueo con
//Zend_Auth, recuperamos su identidad y verificamos el role, si no inicio
//sesion, le asignamos el "role" guest
$role = $this->_auth->hasIdentity() ? $this->_auth->getInstance()->getIdentity()->role : 'guest';
//Posteriormente verificamos si el usuario tiene un role o si es visitante
if (!$this->_acl->isAllowed($role,$resource) && $role == 'guest') {
//Acciones si el usuario es visitante o "guest"
}