class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$modelLoader = new Zend_Application_Module_Autoloader(
array(
"namespace" => "",
"basePath" => APPLICATION_PATH
)
);
$acl = new Model_LibraryAcl();
$auth = Zend_Auth::getInstance();
$oFc = Zend_Controller_Front::getInstance();
$oFc->registerPlugin(new Plugin_AccessCheck($acl,$auth));
return $modelLoader;
}
protected function _initAppModules(){
$this->bootstrap("frontController");
$front = $this->getResource("frontController");
$front->addModuleDirectory(APPLICATION_PATH . '/modules');
}
}
Выше приведен пример кода моей начальной загрузки. Я пытаюсь реализовать Acl для аутентификации, но при попытке сделать это я получаю сообщение об ошибке.
Попытка получить свойство необъекта в C: \ web \ edgarTry \ application \ plugins \ AccessCheck.php в строке 23
ниже приведен код AccessCheck
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract
{
private $_acl = null;
private $_auth = null;
public function __construct(Zend_Acl $acl,Zend_Auth $auth ){
$this->_acl = $acl;
$this->_auth = $auth;
}
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$resource = $request->getControllerName();
$action = $request->getActionName();
$oIdentity = $this->_auth->getStorage()->read();
$role = $oIdentity->role;
if(! $this->_acl->isAllowed($role,$resource,$action)){
$request->setControllerName("authentication")
->setActionName("login");
}
}
}
Задача ещё не решена.
Других решений пока нет …