nov201005
John Marques
0
Zend Framework – Plugin para verificar se o usuário está logado
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






