w pluginie sprawdzasz czy user ma dostęp i ewentualnie robisz przekierowania lub wyświetlasz błędy
tworzysz obiekt Zend_Acl
dodajesz resources oraz roles, potem uprawnienia i na końcu sprawdzasz
poniżej masz przykład z ostatniego projektu
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$module = $request->getModuleName();
$controller = $request->getControllerName();
$action = $request->getActionName();
$user_role = Zend_Registry::get('user_role');
$acl = new Zend_Acl();
$acl -> addRole(new Zend_Acl_Role('quest'))
-> addRole(new Zend_Acl_Role('member'), 'quest')
-> addRole(new Zend_Acl_Role('admin'))
;
$acl -> addResource(new Zend_Acl_Resource('uczelnie'))
-> addResource(new Zend_Acl_Resource('kariery'))
-> addResource(new Zend_Acl_Resource('quiz'))
-> addResource(new Zend_Acl_Resource('newsy'))
-> addResource(new Zend_Acl_Resource('komentarze'))
-> addResource(new Zend_Acl_Resource('reklama'))
-> addResource(new Zend_Acl_Resource('admin'))
-> addResource(new Zend_Acl_Resource('index'))
-> addResource(new Zend_Acl_Resource('kontakt'))
-> addResource(new Zend_Acl_Resource('content'))
-> addResource(new Zend_Acl_Resource('szukaj'))
;
$acl -> allow('quest', 'index', array('index', 'zobacz')); $acl -> allow('quest', 'uczelnie', array('index', 'zobacz')); $acl -> allow('quest', 'kariery', array('index', 'zobacz')); $acl -> allow('quest', 'quiz', array('index')); $acl -> allow('quest', 'newsy', array('index', 'zobacz')); $acl -> allow('quest', 'komentarze', array('index')); $acl -> allow('quest', 'kontakt', array('index')); $acl -> allow('quest', 'szukaj', array('index')); $acl -> allow('quest', 'content', array('index', 'regulamin'));
$acl -> allow('member', 'uczelnie', array('dodaj', 'edytuj', 'moje', 'zdjecia', 'kariery')); $acl -> allow('member', 'kariery', array('dodaj', 'edytuj', 'moje'));
$acl -> deny('member', 'komentarze', array('dodaj'));
$acl -> allow('admin');
Zend_Registry::set('acl',$acl);
if ($acl->has($controller)) {
if ( ! $acl->isAllowed($user_role, $controller, $action)) {
throw new exception('', 403);
}
};
}