Tutorial Zend Framework     Plugin Zend_ACL        Douglas Liradouglas.lira.web@gmail.com
1 – Objetivo            Explicar como funciona o Zend_ACL para o controle de permissões de      acessos ao sistema através...
1 – permissao/application/BootStrap.php    ...    protected function _initSession() {        // Criando uma sessão com o n...
Próximos SlideShares
Carregando em…5
×

Plugin zend acl

1.686 visualizações

Publicada em

Tutorial explicando como funciona o Zend_ACL

Publicada em: Carreiras
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Plugin zend acl

  1. 1. Tutorial Zend Framework Plugin Zend_ACL Douglas Liradouglas.lira.web@gmail.com
  2. 2. 1 – Objetivo Explicar como funciona o Zend_ACL para o controle de permissões de acessos ao sistema através de Roles e Resources. Iremos criar um plug-in para controlar as permissões de acesso.2 – Dificuldade Médio3 – Logica aplicada Sistema modular com dois módulos “ADMIN” e “DEFAULT”, criar regras e perfis de acesso ao sistemas. Teremos apenas um perfil “guest”4 – Observações Não pretendo explica como funciona o zend, nem tão 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
  3. 3. 1 – permissao/application/BootStrap.php ... protected function _initSession() { // Criando uma sessão com o nome “SYSPANEL” $applicationSession = new Zend_Session_Namespace(SYSPANEL); // Adicionando a session um valor para “userRole” caso não exista if (!isset($applicationSession->userRole)) { // Atribuindo o valor “guest” para o “userRole” $applicationSession->userRole = guest; } } protected function _initACL() { // Instanciando o Zend_ACL $acl = new Zend_Acl(); // Criando uma regra para o perfil “guest” no Zend_ACL $acl->addRole(new Zend_Acl_Role(guest)); // Registrando a variavel $acl para que seja visível em toda a aplicação 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 sessão 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)); // Permissão ao Model -> Controller -> Action $acl->allow(guest,default:index, array(index,add,edit)); $acl->allow(guest,admin:index, array(index)); // Vefificando Permissão $allowed = $acl->isAllowed($applicationSession->userRole,$module.:.$controller,$action); // Redirecionando caso não tenha permissão if(!$allowed) { $request->setModuleName(default); $request->setControllerName(error); $request->setActionName(denied); $request->setDispatched(); } } }

×