SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
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();
             }

         }

     }

Más contenido relacionado

La actualidad más candente

Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemandDouglas Lira
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8softeam
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - TabelasDalton Martins
 
AngularJS sem medo
AngularJS sem medoAngularJS sem medo
AngularJS sem medoDouglas Lira
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e TruquesLambda 3
 
Além do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaAlém do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaCharles Kilesse
 
Minicurso Testando RESTful Web Services
Minicurso Testando RESTful Web ServicesMinicurso Testando RESTful Web Services
Minicurso Testando RESTful Web ServicesCharles Kilesse
 

La actualidad más candente (20)

JDBC
JDBCJDBC
JDBC
 
Android Para Iniciantes
Android Para IniciantesAndroid Para Iniciantes
Android Para Iniciantes
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Sistema php
Sistema phpSistema php
Sistema php
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemand
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - Tabelas
 
AngularJS sem medo
AngularJS sem medoAngularJS sem medo
AngularJS sem medo
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e Truques
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Migrando para o PHP 5
Migrando para o PHP 5Migrando para o PHP 5
Migrando para o PHP 5
 
Além do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completaAlém do Webdriver e Page Objects - Versão completa
Além do Webdriver e Page Objects - Versão completa
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Modulos SNEP
Modulos SNEPModulos SNEP
Modulos SNEP
 
Minicurso Testando RESTful Web Services
Minicurso Testando RESTful Web ServicesMinicurso Testando RESTful Web Services
Minicurso Testando RESTful Web Services
 

Similar a Tutorial Zend Framework - Controle de permissões com Zend_ACL

Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
ZF Básico - 6. Autenticação
ZF Básico - 6. AutenticaçãoZF Básico - 6. Autenticação
ZF Básico - 6. AutenticaçãoMarcos Bezerra
 
Criando controle de acesso com php e my sql
Criando controle de acesso com php e my sqlCriando controle de acesso com php e my sql
Criando controle de acesso com php e my sqlPaulo Damas
 
Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012Hugo Magalhães
 
Zend Framework 1.11
Zend Framework 1.11Zend Framework 1.11
Zend Framework 1.11Cezar Souza
 
Symfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeSymfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeHugo Magalhães
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Maurício Linhares
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2Cezar Souza
 

Similar a Tutorial Zend Framework - Controle de permissões com Zend_ACL (20)

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

Más de Douglas Lira

Criando um componente de busca com AngularJS
Criando um componente de busca com AngularJSCriando um componente de busca com AngularJS
Criando um componente de busca com AngularJSDouglas Lira
 
Directive com AngularJS - Datepicker
Directive com AngularJS - DatepickerDirective com AngularJS - Datepicker
Directive com AngularJS - DatepickerDouglas Lira
 
Autenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandAutenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandDouglas Lira
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 
Mude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDBMude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDBDouglas Lira
 
Menu dinâmico com kendoUI
Menu dinâmico com kendoUIMenu dinâmico com kendoUI
Menu dinâmico com kendoUIDouglas Lira
 

Más de Douglas Lira (7)

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

Tutorial Zend Framework - Controle de permissões com 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(); } } }