SlideShare uma empresa Scribd logo
Tutorial Zend Framework



     Plugin Zend_ACL




        Douglas Lira
douglas.lira.web@gmail.com
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édio

3 – 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
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();
             }

         }

     }

Mais conteúdo relacionado

DOCX
Pg2
PPT
Curso de Introdução - PHP Zend Framework
PPT
Manipulando Bancos de Dados com JDBC
PPTX
Aula09 phonegap storage_connection
PPT
ZF Básico - 3. Quick Start
PPTX
Programação web ii aulas 05 e 06
PDF
Acesso a banco de dados com JDBC
PDF
Aula 11 - Controle de sessão em PHP - Programação Web
Pg2
Curso de Introdução - PHP Zend Framework
Manipulando Bancos de Dados com JDBC
Aula09 phonegap storage_connection
ZF Básico - 3. Quick Start
Programação web ii aulas 05 e 06
Acesso a banco de dados com JDBC
Aula 11 - Controle de sessão em PHP - Programação Web

Mais procurados (20)

ODP
PPTX
Android Para Iniciantes
PDF
PHP e Mysql - DELETE
PDF
Introdução ao Zend Framework 2
PDF
Sistema php
PDF
AngularJS com loadOnDemand
PPTX
LambdaDay: Backbone.js
PPT
Progweb Aula8
PDF
Palestra de PDO
PDF
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PDF
Aula 12 Relatório - Tabelas
PPTX
AngularJS sem medo
PPTX
Jquery - Dicas e Truques
ODP
Estrutura do Projeto
ODP
Estrutura do Projeto
PDF
Migrando para o PHP 5
PDF
Além do Webdriver e Page Objects - Versão completa
PPTX
Design patterns
PDF
Modulos SNEP
PDF
Minicurso Testando RESTful Web Services
Android Para Iniciantes
PHP e Mysql - DELETE
Introdução ao Zend Framework 2
Sistema php
AngularJS com loadOnDemand
LambdaDay: Backbone.js
Progweb Aula8
Palestra de PDO
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
Aula 12 Relatório - Tabelas
AngularJS sem medo
Jquery - Dicas e Truques
Estrutura do Projeto
Estrutura do Projeto
Migrando para o PHP 5
Além do Webdriver e Page Objects - Versão completa
Design patterns
Modulos SNEP
Minicurso Testando RESTful Web Services
Anúncio

Semelhante a Plugin zend acl (20)

PDF
Rafael Garcia - Yii Framework, principais características e em ação
PDF
PHP ao Extremo
PPTX
PHP robusto com Zend Framework
ODP
Zend Framework - PHPSP - 2009
PDF
Tutorial.yii
PPT
ZF Básico - 6. Autenticação
PDF
Criando controle de acesso com php e my sql
PDF
Introdução ao Symfony 2 - SfCon 2012
PDF
Api usando Silex
PDF
Zend Framework 1.11
PPT
PHP FrameWARks - FISL
PDF
Symfony - Framework PHP de alta produtividade
PDF
Desenvolvimento ágil com Kohana framework
PDF
Curso de Ruby on Rails - Aula 03
ODP
Php 05 Mvc
PDF
Meu projeto final - Neobase 2.0
PDF
modernizando a arquitertura de sua aplicação
PDF
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
PPTX
Moodle api tutorial
PPT
Aprofunde se no php 5.3
Rafael Garcia - Yii Framework, principais características e em ação
PHP ao Extremo
PHP robusto com Zend Framework
Zend Framework - PHPSP - 2009
Tutorial.yii
ZF Básico - 6. Autenticação
Criando controle de acesso com php e my sql
Introdução ao Symfony 2 - SfCon 2012
Api usando Silex
Zend Framework 1.11
PHP FrameWARks - FISL
Symfony - Framework PHP de alta produtividade
Desenvolvimento ágil com Kohana framework
Curso de Ruby on Rails - Aula 03
Php 05 Mvc
Meu projeto final - Neobase 2.0
modernizando a arquitertura de sua aplicação
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
Moodle api tutorial
Aprofunde se no php 5.3
Anúncio

Mais de Douglas Lira (7)

PDF
Criando um componente de busca com AngularJS
PDF
Directive com AngularJS - Datepicker
PDF
Autenticação com AngularJS e loadOnDemand
PDF
AngularJS com NODE.JS e Socket.IO
PDF
Time sheet
PDF
Mude seu jeito de pensar com MongoDB
PDF
Menu dinâmico com kendoUI
Criando um componente de busca com AngularJS
Directive com AngularJS - Datepicker
Autenticação com AngularJS e loadOnDemand
AngularJS com NODE.JS e Socket.IO
Time sheet
Mude seu jeito de pensar com MongoDB
Menu dinâmico com kendoUI

Último (14)

PDF
Encontro 5 - Turma 6 MAF - Tráfego Pago (1).pdf
PPTX
folclMMMMore_sul_brasil_apresentacao.pptx
PPTX
ciencias24.pptx ciencias24.pptx ciencias24.pptx
PPT
logistica e centros de distribuição no sec
PPTX
Slide_Introdução ao Google Looker Studio (1).pptx
PDF
artigo CADEIA DE ABASTECIMENTO GESTÃO DO ESTOQUE.pdf
PPTX
CORREÇÃO DE EXERCICIO - Testando os conhecimentos sobre tecidos humanos.pptx
PPTX
Trabalho_A3_SD_UniBus_asdasfafaSlides.pptx
PPTX
TRABALHO SOCIAL E CAPCITAÇÃO DE PROFISSIONAIS
PPTX
Slides Sífilis.pptxxxxxxxxxxxxxxxxxxxxxxxx
PPTX
NR01 - Treinamento - Elaboracao PGR - 2023.pptx
PPTX
treinamento-nr17-ergonomia.pptx treinamento para ergonomia
PPTX
material de aprendizado para enstudoSHAKempreendedorismo.pptx
PPTX
NR17+-+Treinamento+Operador+de+Check+Out+-+2023.pptx
Encontro 5 - Turma 6 MAF - Tráfego Pago (1).pdf
folclMMMMore_sul_brasil_apresentacao.pptx
ciencias24.pptx ciencias24.pptx ciencias24.pptx
logistica e centros de distribuição no sec
Slide_Introdução ao Google Looker Studio (1).pptx
artigo CADEIA DE ABASTECIMENTO GESTÃO DO ESTOQUE.pdf
CORREÇÃO DE EXERCICIO - Testando os conhecimentos sobre tecidos humanos.pptx
Trabalho_A3_SD_UniBus_asdasfafaSlides.pptx
TRABALHO SOCIAL E CAPCITAÇÃO DE PROFISSIONAIS
Slides Sífilis.pptxxxxxxxxxxxxxxxxxxxxxxxx
NR01 - Treinamento - Elaboracao PGR - 2023.pptx
treinamento-nr17-ergonomia.pptx treinamento para ergonomia
material de aprendizado para enstudoSHAKempreendedorismo.pptx
NR17+-+Treinamento+Operador+de+Check+Out+-+2023.pptx

Plugin zend acl

  • 1. Tutorial Zend Framework Plugin Zend_ACL Douglas Lira douglas.lira.web@gmail.com
  • 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édio 3 – 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. 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(); } } }