Пример #1
0
 /**
  * (non-PHPdoc)
  * @see Zend_Controller_Plugin_Abstract::preDispatch()
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     try {
         $viewHelperAction = new Zend_View_Helper_Action();
         $navigation = Zend_Registry::get('Zend_Navigation');
         $navItem = $navigation->findBy('active', true);
         $auth = Zend_Auth::getInstance();
         $acl = Zend_Registry::get('ZendACL');
         $mdlRole = new Acl_Model_Role();
         if ($auth->hasIdentity()) {
             $identity = $auth->getIdentity();
             $role = $mdlRole->find($identity->role_id)->current();
         } else {
             $role = $mdlRole->find(3)->current();
         }
         // Zend_Debug::dump($acl);
         //Zend_Debug::dump($role->id);
         $mdlWidget = new System_Model_Widget();
         $hookXml = APPLICATION_PATH . '/configs/hooks.xml';
         $sxeHook = new SimpleXMLElement($hookXml, null, true);
         $mdlResource = new Acl_Model_Resource();
         $mdlWidgetDetail = new System_Model_Widgetdetail();
         foreach ($sxeHook as $hook) {
             #/*
             #Zend_Debug::dump($hook);
             $widgets = $mdlWidgetDetail->getWidgetsByHookAndItemId($navItem->id, $hook);
             $hookContent = '';
             foreach ($widgets as $widget) {
                 #Zend_Debug::dump($widget->title);
                 $params = array();
                 $widgetParams = Zend_Json::decode($widget->params);
                 foreach ($widgetParams as $strParam => $valParam) {
                     $params[$strParam] = $valParam;
                 }
                 $rsACL = strtolower($widget->module . ':' . $widget->controller);
                 $prvACL = strtolower($widget->actioncontroller);
                 if ($acl->isAllowed($role->id, $rsACL, $prvACL)) {
                     #if ( $widget->position == "menu_registrado" )
                     #var_dump($widget->params, $widget->actioncontroller, $widget->id);
                     $hookContent .= $widget->showtitle == 1 ? "<h3>" . $widget->title . "</h3>" : "";
                     $hookContent .= $viewHelperAction->action($widget->actioncontroller, $widget->controller, $widget->module, $params);
                 }
             }
             #*/
             Zend_Layout::getMvcInstance()->assign(strval($hook), $hookContent);
         }
     } catch (Exception $e) {
         try {
             $writer = new Zend_Log_Writer_Stream(APPLICATION_LOG_PATH . 'plugins.log');
             $logger = new Zend_Log($writer);
             $logger->log($e->getMessage(), Zend_Log::ERR);
         } catch (Exception $e) {
         }
     }
 }
Пример #2
0
 public function action($action, $controller, $module = null, array $params = array())
 {
     Zend_Controller_Front::getInstance()->setRequest($this->request);
     $this->_setScriptPath($module);
     $return = parent::action($action, $controller, $module, $params);
     Zend_Controller_Front::getInstance()->setRequest($this->_oldRequest);
     return $return;
 }
Пример #3
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $auth = Zend_Auth::getInstance();
     $publicPages = array();
     $publicPages['controllers'] = array('login');
     $publicPages['actions'] = array();
     $controllerName = $request->getControllerName();
     $actionName = $request->getActionName();
     if (in_array($controllerName, $publicPages['controllers'])) {
         return true;
     }
     PermissionTemplate::auditAccess($controllerName, $actionName);
     if ($auth->hasIdentity()) {
         //$permissionTemplateId = $auth->getIdentity()->permissionTemplateId;
         $userId = $auth->getIdentity()->userId;
         $user = new User();
         $user->userId = (int) $auth->getIdentity()->userId;
         $user->populate();
         $permissionTemplateId = $user->permissionTemplateId;
         if ($permissionTemplateId != 'superadmin' && !PermissionTemplate::hasAccess($permissionTemplateId, $controllerName, $actionName)) {
             $error = __('Access denied');
             trigger_error($error, E_USER_NOTICE);
             throw new WebVista_App_AuthException($error);
         } else {
             return true;
         }
     }
     if (isset($_SERVER['PHP_AUTH_USER'])) {
         $_POST['username'] = $_SERVER['PHP_AUTH_USER'];
         $_POST['password'] = $_SERVER['PHP_AUTH_PW'];
         $zvah = new Zend_View_Helper_Action();
         $zvah->action('process', 'login');
         if ($auth->hasIdentity() || in_array($controllerName, $publicPages['controllers'])) {
             return true;
         }
     }
     /*else if ($actionName != 'index' && $controllerName != 'index') {
     			header('WWW-Authenticate: Basic realm="Unauthorize Access Prohibited"');
     			header('HTTP/1.0 401 Unauthorized');
     		}*/
     throw new WebVista_App_AuthException('You must be authenticated to access the system.');
 }
Пример #4
0
 /**
  * 显示动作控制器的内容
  * 
  * @see Zend_View_Helper_Action::action()
  * @param  string $action
  * @param  string $controller
  * @param  string $module Defaults to default module
  * @param  array|null $params
  * @param  boolean $accept
  * @return string
  */
 public function action($action, $controller, $module = null, array $params = array(), $accept = false)
 {
     if (false !== $accept) {
         if (!$this->view->navigation()->mvcMenu()->acceptMVC($action, $controller, $module, $params, true)) {
             return '';
         }
     }
     if ($params == array(null)) {
         $params = Zend_Controller_Front::getInstance()->getRequest()->getParams();
     }
     return parent::action($action, $controller, $module, $params);
 }