1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class Plugin_Auth extends Zend_Controller_Plugin_Abstract
{
private $_auth;
private $_noAuth = array( 'module' => 'panel',
'controller' => 'login',
'action'=> 'index'
);
public function __construct ( $auth )
{
$this->_auth = $auth;
}
public function preDispatch( Zend_Controller_Request_Abstract $request )
{
$controller = $request->controller;
$action = $request->action;
$module = $request->module;
if ( $request->getControllerName ( ) != 'login' )
{
if ( !$this->_auth->hasIdentity ( ) )
{
$module = $this->_noAuth['module'];
$controller = $this->_noAuth['controller'];
$action = $this->_noAuth['action'];
}
else
{
$module = 'panel';
$controller = 'index';
$action = 'index';
}
}
elseif ( $request->getControllerName ( ) == 'login' )
{
if ( $this->_auth->hasIdentity ( ) )
{
$this->_response->setRedirect('/');
}
}
$request->setModuleName ( $module );
$request->setControllerName ( $controller );
$request->setActionName ( $action );
}
} |