Exemple #1
0
 public function postDispatch(Zend_Controller_Request_Abstract $request)
 {
     //		if (Zend_Registry::isRegistered(Tomato_Core_GlobalKey::LOG_REQUEST)
     //			&& Zend_Registry::get(Tomato_Core_GlobalKey::LOG_REQUEST) == false
     //		) {
     //			return;
     //		}
     $objRequestLog = new Model_RequestLog();
     $uri = $request->getRequestUri();
     $agent = $request->getServer('HTTP_USER_AGENT');
     $browserInfo = self::_getBrowserInfo($agent);
     $objRequestLog->insert(array('ip' => $request->getClientIp(), 'agent' => $agent, 'browser' => $browserInfo['browser'], 'version' => $browserInfo['version'], 'platform' => $browserInfo['platform'], 'bot' => self::_getBot($agent), 'uri' => $uri, 'full_url' => $request->getScheme() . '://' . $request->getHttpHost() . '/' . ltrim($uri, '/'), 'refer_url' => $request->getServer('HTTP_REFERER'), 'access_time' => date('Y-m-d H:i:s')));
     //		$log = new Tomato_Modules_Core_Model_RequestLog(
     //			array(
     //				'ip' => $request->getClientIp(),
     //				'agent' => $agent,
     //				'browser' => $browserInfo['browser'],
     //				'version' => $browserInfo['version'],
     //				'platform' => $browserInfo['platform'],
     //				'bot' => self::_getBot($agent),
     //				'uri' => $uri,
     //				'full_url' => $request->getScheme().'://'.$request->getHttpHost().'/'.ltrim($uri, '/'),
     //				'refer_url' => $request->getServer('HTTP_REFERER'),
     //				'access_time' => date('Y-m-d H:i:s'),
     //			)
     //		);
     //		$conn = Tomato_Core_Db_Connection::getMasterConnection();
     //		$gateway = new Tomato_Modules_Core_Model_RequestLogGateway();
     //		$gateway->setDbConnection($conn);
     //		$gateway->create($log);
 }
 public function preDispatch(AbstractRequest $request)
 {
     if ($request->module === 'default' && $request->controller === 'auth') {
         return;
     }
     $frontController = FrontController::getInstance();
     $bootstrap = $frontController->getParam('bootstrap');
     $serviceManager = $bootstrap->getResource('ServiceManager');
     $authService = $serviceManager->get('Zend\\Authentication\\AuthenticationService');
     if (!$authService->hasIdentity()) {
         $response = $this->getResponse();
         $currentUri = sprintf('%s://%s%s%s', $request->getScheme(), $request->getHttpHost(), $request->getBaseUrl(), $request->getPathInfo());
         $adapter = $authService->getAdapter();
         $adapter->setLoginParameters(array('service' => $currentUri));
         // Assume user is back here from a CAS authentication
         if ($request->getQuery('ticket')) {
             $adapter->setServiceValidateParameters(array('service' => $currentUri, 'ticket' => $request->getQuery('ticket')));
             // Validate the ticket
             $result = $authService->authenticate();
             if (!$result->isValid()) {
                 $response->setRedirect($adapter->createLoginUri());
             }
             // Assume the user just got here
         } else {
             $response->setRedirect($adapter->createLoginUri());
         }
     }
 }
Exemple #3
0
 /**
  * routeStartup
  * 在 路由器 完成请求的路由前被调用
  * 
  * @param Zend_Controller_Request_Abstract $request 
  * @return void
  */
 public function routeStartup(Zend_Controller_Request_Abstract $request)
 {
     // Do nothing...
     return;
     $hostname = $request->getHttpHost();
     $pathinfo = $request->getPathInfo();
     /**
      * 根据二级域名检测请求的模块
      */
     if (!empty($hostname)) {
         $segments = explode('.', $hostname);
         if (isset($segments[2])) {
             $segmentNum = count($segments);
             $rootDomain = $segments[$segmentNum - 2] . '.' . $segments[$segmentNum - 1];
             if ($rootDomain === parse_url(URL_FTT, PHP_URL_HOST)) {
                 $subDomain2 = $segments[$segmentNum - 3];
                 if (array_key_exists($subDomain2, static::$_subDomain2ModuleMap)) {
                     $module = static::$_subDomain2ModuleMap[$subDomain2];
                     $hostel = explode('/', trim($pathinfo, '/'));
                     $hostel = trim(array_shift($hostel));
                     if ($hostel != '') {
                         $this->getResponse()->setRedirect(URL_FTT . '/' . $module . '/?' . static::KEY_INN . '=' . $hostel)->sendResponse();
                         exit;
                     }
                 }
             }
         }
     }
 }
 public function routeStartup(\Zend_Controller_Request_Abstract $request)
 {
     /** @var $request \Zend_Controller_Request_Http */
     if (!$request->isGet()) {
         return;
     }
     $host = 'http://' . $request->getHttpHost();
     $uri = \Zend_Uri_Http::fromString($host . $request->getRequestUri());
     $query = $uri->getQueryAsArray();
     if (!isset($query['_escaped_fragment_'])) {
         return;
     }
     $path = $uri->getPath() . ltrim($query['_escaped_fragment_'], '/');
     $uri->setPath($path);
     unset($query['_escaped_fragment_']);
     $uri->setQuery($query);
     $request->setRequestUri(str_replace($host, '', $uri->getUri()));
     $request->setPathInfo();
 }
Exemple #5
0
 public function routeStartup(Zend_Controller_Request_Abstract $request)
 {
     // Initialize the variables
     $front = Zend_Controller_Front::getInstance();
     $bootstrap = $front->getParam('bootstrap');
     $this->locale = $bootstrap->getResource('locale');
     if (null === $this->locale) {
         $this->locale = new Zend_Locale();
     }
     $this->resource = ZFE_Environment::getResource('Multilanguage');
     $options = $this->resource->getOptions();
     $language = $this->getBrowserLanguage();
     // If a domain is given, perform subdomain-based language detection
     if (isset($options['domain'])) {
         $domain = $request->getHttpHost();
         // If the main domain is accessed, use the browser language and
         // redirect to that subdomain
         if ($domain === $options['domain']) {
             // Perform 302 redirect
             header('HTTP/1.1 302');
             header('Location: ' . $this->composeUrl($language));
             exit;
         }
         // If it is not an IP address, extract the language from the domain, and store it
         if (!ZFE_Core::isIpAddress($domain)) {
             $subdomain = strtolower(str_replace('.' . $options['domain'], '', $domain));
             $parts = explode('-', $subdomain);
             $language = $parts[0];
             if (isset($parts[1])) {
                 $language .= '_' . ucfirst($parts[1]);
             }
         }
     }
     // healthcheck: only use whitelisted languages
     if (!in_array($language, $options["languages"])) {
         $language = $options["languages"][0];
     }
     // Store the language in the resource
     // This also initializes the translation resource
     $this->resource->setLanguage($language);
 }
Exemple #6
0
 /**
  * @param \Zend_Controller_Request_Abstract $request
  * @return bool|void
  */
 public function routeStartup(\Zend_Controller_Request_Abstract $request)
 {
     $requestUri = $request->getRequestUri();
     $excludePatterns = array();
     // only enable GET method
     if (!$request->isGet()) {
         return $this->disable();
     }
     // disable the output-cache if browser wants the most recent version
     // unfortunately only Chrome + Firefox if not using SSL
     if (!$request->isSecure()) {
         if (isset($_SERVER["HTTP_CACHE_CONTROL"]) && $_SERVER["HTTP_CACHE_CONTROL"] == "no-cache") {
             return $this->disable("HTTP Header Cache-Control: no-cache was sent");
         }
         if (isset($_SERVER["HTTP_PRAGMA"]) && $_SERVER["HTTP_PRAGMA"] == "no-cache") {
             return $this->disable("HTTP Header Pragma: no-cache was sent");
         }
     }
     try {
         $conf = \Pimcore\Config::getSystemConfig();
         if ($conf->cache) {
             $conf = $conf->cache;
             if (!$conf->enabled) {
                 return $this->disable();
             }
             if (\Pimcore::inDebugMode()) {
                 return $this->disable("in debug mode");
             }
             if ($conf->lifetime) {
                 $this->setLifetime((int) $conf->lifetime);
             }
             if ($conf->excludePatterns) {
                 $confExcludePatterns = explode(",", $conf->excludePatterns);
                 if (!empty($confExcludePatterns)) {
                     $excludePatterns = $confExcludePatterns;
                 }
             }
             if ($conf->excludeCookie) {
                 $cookies = explode(",", strval($conf->excludeCookie));
                 foreach ($cookies as $cookie) {
                     if (!empty($cookie) && isset($_COOKIE[trim($cookie)])) {
                         return $this->disable("exclude cookie in system-settings matches");
                     }
                 }
             }
             // output-cache is always disabled when logged in at the admin ui
             if (isset($_COOKIE["pimcore_admin_sid"])) {
                 return $this->disable("backend user is logged in");
             }
         } else {
             return $this->disable();
         }
     } catch (\Exception $e) {
         \Logger::error($e);
         return $this->disable("ERROR: Exception (see debug.log)");
     }
     foreach ($excludePatterns as $pattern) {
         if (@preg_match($pattern, $requestUri)) {
             return $this->disable("exclude path pattern in system-settings matches");
         }
     }
     $deviceDetector = Tool\DeviceDetector::getInstance();
     $device = $deviceDetector->getDevice();
     $deviceDetector->setWasUsed(false);
     $this->defaultCacheKey = "output_" . md5($request->getHttpHost() . $requestUri);
     $cacheKeys = [$this->defaultCacheKey . "_" . $device, $this->defaultCacheKey];
     $cacheItem = null;
     foreach ($cacheKeys as $cacheKey) {
         $cacheItem = CacheManager::load($cacheKey, true);
         if ($cacheItem) {
             break;
         }
     }
     if (is_array($cacheItem) && !empty($cacheItem)) {
         header("X-Pimcore-Output-Cache-Tag: " . $cacheKey, true, 200);
         header("X-Pimcore-Output-Cache-Date: " . $cacheItem["date"]);
         foreach ($cacheItem["rawHeaders"] as $header) {
             header($header);
         }
         foreach ($cacheItem["headers"] as $header) {
             header($header['name'] . ': ' . $header['value'], $header['replace']);
         }
         echo $cacheItem["content"];
         exit;
     } else {
         // set headers to tell the client to not cache the contents
         // this can/will be overwritten in $this->dispatchLoopShutdown() if the cache is enabled
         $date = new \Zend_Date(1);
         $this->getResponse()->setHeader("Expires", $date->get(\Zend_Date::RFC_1123), true);
         $this->getResponse()->setHeader("Cache-Control", "max-age=0, no-cache", true);
     }
 }
 /**
  * Predispatch
  * Checks if the current user identified by roleName has rights to the requested url (module/controller/action)
  * If not, it will call denyAccess to be redirected to errorPage
  *
  * @return void
  **/
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     $controller = strtolower($request->getControllerName());
     if (in_array($controller, array("api", "auth", "locale"))) {
         $this->setRoleName("G");
     } elseif (!Zend_Auth::getInstance()->hasIdentity()) {
         if ($controller !== 'login') {
             if ($request->isXmlHttpRequest()) {
                 $url = 'http://' . $request->getHttpHost() . '/login';
                 $json = Zend_Json::encode(array('auth' => false, 'url' => $url));
                 // Prepare response
                 $this->getResponse()->setHttpResponseCode(401)->setBody($json)->sendResponse();
                 //redirectAndExit() cleans up, sends the headers and stops the script
                 Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')->redirectAndExit();
             } else {
                 $r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
                 $r->gotoSimpleAndExit('index', 'login', $request->getModuleName());
             }
         }
     } else {
         $userInfo = Zend_Auth::getInstance()->getStorage()->read();
         $this->setRoleName($userInfo->type);
         Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($this->_acl);
         Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($this->_roleName);
         $resourceName = '';
         if ($request->getModuleName() != 'default') {
             $resourceName .= strtolower($request->getModuleName()) . ':';
         }
         $resourceName .= $controller;
         /** Check if the controller/action can be accessed by the current user */
         if (!$this->getAcl()->has($resourceName) || !$this->getAcl()->isAllowed($this->_roleName, $resourceName, $request->getActionName())) {
             /** Redirect to access denied page */
             $this->denyAccess();
         }
     }
 }