/**
  * Retorna o adaptador de sessao
  * @param string $name
  * @return SessionContainer
  */
 public function getSessionAdapter($name = 'Default')
 {
     if (!isset($_SESSION[$name])) {
         $sessionConfig = new SessionConfig();
         $sessionConfig->setOptions($this->globalConfig['session']);
         $sessionStorage = new \Zend\Session\Storage\SessionArrayStorage();
         $sessionManager = new SessionManager();
         $sessionManager->rememberMe($this->globalConfig['session']['remember_me_seconds']);
         $sessionManager->forgetMe();
         $sessionManager->setConfig($sessionConfig);
         $sessionManager->setStorage($sessionStorage);
         $sessionNamespace = new SessionContainer($name, $sessionManager);
         $sessionNamespace->setExpirationSeconds(3600);
         if (!isset($sessionNamespace->init)) {
             $request = new \Zend\Http\PhpEnvironment\Request();
             $sessionNamespace->init = 1;
             $sessionNamespace->remoteAddr = $request->getServer('REMOTE_ADDR');
             $sessionNamespace->httpUserAgent = $request->getServer('HTTP_USER_AGENT');
             /*
              $chain = $sessionManager->getValidatorChain();
              $validatorUserAgent = new \Zend\Session\Validator\HttpUserAgent($sessionNamespace->httpUserAgent);
              $chain->attach('session.validate', array($validatorUserAgent, 'isValid'));
              $validatorAddr = new \Zend\Session\Validator\RemoteAddr($sessionNamespace->remoteAddr);
              $chain->attach('session.validate', array($validatorAddr, 'isValid'));
             
              $sessionManager->setValidatorChain($chain);
             * 
             */
         }
         $sessionNamespace->setDefaultManager($sessionManager);
     } else {
         $sessionNamespace = new SessionContainer($name);
         $sessionNamespace->setExpirationSeconds(3600);
     }
     $this->sessionAdapter = $sessionNamespace;
     return $sessionNamespace;
 }
예제 #2
0
 public function singleRecordAction()
 {
     $retour = array();
     $iso = $this->params('iso3166');
     $request = new \Zend\Http\PhpEnvironment\Request();
     $methode = $request->getServer('REQUEST_METHOD');
     if (isset($iso)) {
         $retour["search"] = $iso;
         $sm = $this->getServiceLocator();
         $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter');
         $resultSetPrototype = new \Zend\Db\ResultSet\ResultSet();
         $resultSetPrototype->setArrayObjectPrototype(new Country());
         $tableGateWay = new TableGateway('country', $dbAdapter, null, $resultSetPrototype);
         $countryTable = new CountryTable($tableGateWay);
         switch ($methode) {
             case "GET":
                 $country = $countryTable->getCountryWithSearch($iso);
                 if (isset($country)) {
                     $retour[] = $country->toArray();
                 } else {
                     $retour["error"] = "Pas de resultat";
                 }
                 break;
             case "PATCH":
                 $country = $countryTable->getCountryWithSearch($iso);
                 if (isset($country)) {
                     $postContent = $request->getContent();
                     if (trim($postContent)) {
                         //$retour["content"] = json_decode($postContent);
                         $formReceivedData = new Form\Register();
                         $formReceivedData->setData(json_decode($postContent, true));
                         //$retour["insert"] = json_decode($postContent,true);
                         if ($formReceivedData->isValid()) {
                             $newCountry = new Country();
                             $newCountry->exchangeArray(json_decode($postContent, true));
                             $countryTable->saveCountry($newCountry);
                             $retour["success"] = "Donnees valides";
                         } else {
                             $retour["error"] = "Donnees recues non valides";
                         }
                     } else {
                         $retour["error"] = "Pas de donnees recues";
                     }
                 } else {
                     $retour["error"] = "Pays non trouve";
                 }
                 break;
             case "DELETE":
                 $country = $countryTable->getCountryWithSearch($iso);
                 if (isset($country)) {
                     $countryTable->deleteCountryWithSearch($iso);
                     $retour["success"] = "Suppression reussie";
                 } else {
                     $retour["error"] = "Pays non trouve";
                 }
                 break;
             default:
                 $retour["error"] = "405 : Forbidden method";
                 break;
         }
     } else {
         $retour["error"] = "Pas d'iso3166 specifie";
     }
     return new JsonModel($retour);
 }
예제 #3
0
 public function ccCheckAction()
 {
     $response = $this->getResponse();
     $response->setStatusCode(200);
     $response->setContent("Thank you");
     $config = $this->getServiceLocator()->get('Config');
     $sec_key = $config['ERS\\iPayment']['sec_key'];
     $allowed_ips = array('212.227.34.218', '212.227.34.219', '212.227.34.220');
     $logger = $this->getServiceLocator()->get('Logger');
     $request = new \Zend\Http\PhpEnvironment\Request();
     $ipmatch = false;
     if (in_array($request->getServer('REMOTE_ADDR'), $allowed_ips)) {
         $ipmatch = true;
     } else {
         $logger->info('unauthorized hidden trigger from: ' . $request->getServer('REMOTE_ADDR'));
         return $response;
     }
     $post_param = $this->params()->fromPost();
     $logger->info('$_POST:');
     $logger->info($post_param);
     $return_checksum = array();
     if (isset($post_param["trxuser_id"])) {
         $return_checksum[] = $post_param["trxuser_id"];
     }
     if (isset($post_param["trx_amount"])) {
         $return_checksum[] = $post_param["trx_amount"];
     }
     if (isset($post_param["trx_currency"])) {
         $return_checksum[] = $post_param["trx_currency"];
     }
     if (isset($post_param["ret_authcode"])) {
         $return_checksum[] = $post_param["ret_authcode"];
     }
     if (isset($post_param["ret_trx_number"])) {
         $return_checksum[] = $post_param["ret_trx_number"];
     }
     $return_checksum[] = $sec_key;
     $logger->info($return_checksum);
     $logger->info('ret_param: ' . $post_param["ret_param_checksum"]);
     $logger->info('hash     : ' . md5(implode($return_checksum)));
     if ($post_param["ret_param_checksum"] != md5(implode($return_checksum))) {
         // Error because hash do not match!
         $logger->emerg('Unable to finish payment, checksums do not match.');
         return $response;
         #exit;
     }
     $hashkey = $this->params()->fromRoute('hashkey', '');
     if ($hashkey == '') {
         $logger->warn('no hashkey given in route');
         return $response;
     }
     $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     $order = $em->getRepository("ErsBase\\Entity\\Order")->findOneBy(array('hashkey' => $hashkey));
     if ($order == null) {
         $logger->warn('unable to find order with hashkey: ' . $hashkey);
         return $response;
     }
     $order->setPaymentStatus('paid');
     foreach ($order->getItems() as $item) {
         $item->setStatus('paid');
         $em->persist($item);
     }
     $orderStatus = new Entity\OrderStatus();
     $orderStatus->setOrder($order);
     $orderStatus->setValue('paid');
     $order->addOrderStatus($orderStatus);
     $em->persist($order);
     $em->persist($orderStatus);
     $em->flush();
     return $response;
 }