nov201005

0

Zend Framework – Plugin para verificar se o usuário está logado

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá Pessoal,

Estou a um tempo me dedicando ao Zend Framework, por que acredito ser um boa escolha na questão de tempo e nível de desenvolvimento e até o momento não me arrependo da escolha de aprender, tenho volta e meia dificuldade, mas acontece não é mesmo, da mesma forma quando aprendemos a dirigir, andar de bicicleta no começo e difícil e depois vai melhorando com a prática. =D

Mas então, hoje vou mostar um plugin simples, que vai facilitar bastante, ele serve para verificar se o usuário está logado ou não, caso não esteja direciona para a tela de login.

Para que você não tenha que colocar a verificação em todo metodo init de seus controladores.

Esse plugin é ideal para você utilizar no sistema de administração do site.

Então vamos lá ao código!

No meu caso a pasta de plugins fica dentro da pasta application então seria mais ou menos assim.

application/plugins/HasIdentity.php

class Application_Plugin_HasIdentity extends Zend_Controller_Plugin_Abstract
{
   /*
    Nome do módulo, controlador e ação que o usuário terá acesso caso não esteja logado.
    */
   const module      = 'admin';
   const controller  = 'auth';
   const action      = 'login';

   public function preDispatch(Zend_Controller_Request_Abstract $request)
   {
      $module     = $request->getModuleName();
      $controller = $request->getControllerName();
      $action     = $request->getActionName();

      // Verifica se o usuário não está logado
      if(!Zend_Auth::getInstance()->hasIdentity()) {
         // Verifica se a requisição é diferente do permitido
         // Se for diferente rotea para a página de login
         if($module != self::module && $controller != self::controller && $action != self::action) {
            $request->setModuleName(self::module);
            $request->setControllerName(self::controller);
            $request->setActionName(self::action);
         }
      }
   }
}

Ai depois é so registrar o plugin no meu caso uso no bootstrap ficando assim.

public function _initPlugins()
{
   $frontController = Zend_Controller_Front::getInstance();
   $frontController->registerPlugin(new Application_Plugin_HasIdentity());
}

Pronto! Agora que você registrou o plugin só atualizar a página e experimentar. =D

Abraços,

John Marques


Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Responda