Você está na página 1de 2

1 Objetivo Explicar como funciona o Zend_ACL para o controle de permisses de acessos ao sistema atravs de Roles e Resources.

Iremos criar um plug-in para controlar as permisses de acesso. 2 Dificuldade Mdio 3 Logica aplicada Sistema modular com dois mdulos perfis de acesso ao sist 4 Observaes No pretendo explica como funciona o zend, nem to pouco como deve ser configurado. O objetivo do tutorial explicar apenas o Zend_ACL, como funciona e como aplica-lo. Caso queira entender a estrutura, segue em anexo o exemplo sendo assim observe e estude ou qualquer coisa mande e-mail ;) 5 Imagem da estrutura

1 permissao/application/BootStrap.php
... protected function _initSession() { $applicationSession = new Zend_Session_Namespace('SYSPANEL'); if (!isset($applicationSession->userRole)) { $applicationSession->userRole = 'guest'; } } protected function _initACL() { // Instanciando o Zend_ACL $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); // Registrando a variavel $acl para que seja visvel em toda a aplicao Zend_Registry::set('ACL', $acl); }

2 permissao/library/DLSistema/Restrict/Access.php
class DLSistema_Restrict_Access extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { // Pegando o Model -> Controller -> Action $module = $request->getModuleName(); $controller = $request->getControllerName(); $action = $request->getActionName(); // Pegando a sesso iniciada $applicationSession = new Zend_Session_Namespace('SYSPANEL'); // Pegando o Zend_ACL resgistrado no Bootstrap $acl = Zend_Registry::get('ACL'); // Criando acesso ao Model:Controller -> Action $acl->add(new Zend_Acl_Resource('default:index','index')); $acl->add(new Zend_Acl_Resource('admin:index','index')); // Permisso ao Model -> Controller -> Action $acl->allow('guest','default:index', array('index','add','edit')); $acl->allow('guest','admin:index', array('index')); // Vefificando Permisso $allowed = $acl->isAllowed($applicationSession->userRole,$module.':'.$controller,$action); // Redirecionando caso no tenha permisso if(!$allowed) { $request->setModuleName('default'); $request->setControllerName('error'); $request->setActionName('denied'); $request->setDispatched(); } } }

Você também pode gostar