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; }
/** * (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) { } } }
/** * 显示动作控制器的内容 * * @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); }
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.'); }