2015-02-22 3 views
1

Когда я положил мой сайт в режим обслуживания и попытаться использовать историю заказов от администратора я получаю:OpenCart 2 Admin API вызовов в режиме технического обслуживания

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

Как я могу передать данные аутентификации в завиток запросе поэтому режим обслуживания отключен, если вы вошли в систему как администратор?

public function api() { 
    $json = array(); 

    // Store 
    if (isset($this->request->get['store_id'])) { 
     $store_id = $this->request->get['store_id']; 
    } else { 
     $store_id = 0; 
    } 

    $this->load->model('setting/store'); 

    $store_info = $this->model_setting_store->getStore($store_id); 

    if ($store_info) { 
     $url = $store_info['ssl']; 
    } else { 
     $url = HTTPS_CATALOG; 
    } 

    if (isset($this->session->data['cookie']) && isset($this->request->get['api'])) { 
     // Include any URL perameters 
     $url_data = array(); 

     foreach ($this->request->get as $key => $value) { 
      if ($key != 'route' && $key != 'token' && $key != 'store_id') { 
       $url_data[$key] = $value; 
      } 
     } 

     $curl = curl_init(); 

     // Set SSL if required 
     if (substr($url, 0, 5) == 'https') { 
      curl_setopt($curl, CURLOPT_PORT, 443); 
     } 

     curl_setopt($curl, CURLOPT_HEADER, false); 
     curl_setopt($curl, CURLINFO_HEADER_OUT, true); 
     curl_setopt($curl, CURLOPT_USERAGENT, $this->request->server['HTTP_USER_AGENT']); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_FORBID_REUSE, false); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl, CURLOPT_URL, $url . 'index.php?route=' . $this->request->get['api'] . ($url_data ? '&' . http_build_query($url_data) : '')); 

     if ($this->request->post) { 
      curl_setopt($curl, CURLOPT_POST, true); 
      curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->request->post)); 
     } 

     curl_setopt($curl, CURLOPT_COOKIE, session_name() . '=' . $this->session->data['cookie'] . ';'); 

     $json = curl_exec($curl); 

     curl_close($curl); 
    } 

    $this->response->addHeader('Content-Type: application/json'); 
    $this->response->setOutput($json); 
} 

Я заметил в других методах, что это дополнительный запрос для api/login. Есть ли способ, я могу слить 2 вместе

$api_info = $this->model_user_api->getApi($this->config->get('config_api_id')); 

if ($api_info) { 
    $curl = curl_init(); 

    // Set SSL if required 
    if (substr(HTTPS_CATALOG, 0, 5) == 'https') { 
     curl_setopt($curl, CURLOPT_PORT, 443); 
    } 

    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLINFO_HEADER_OUT, true); 
    curl_setopt($curl, CURLOPT_USERAGENT, $this->request->server['HTTP_USER_AGENT']); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_FORBID_REUSE, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_URL, HTTPS_CATALOG . 'index.php?route=api/login'); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($api_info)); 

    $json = curl_exec($curl); 

    if (!$json) { 
     $this->error['warning'] = sprintf($this->language->get('error_curl'), curl_error($curl), curl_errno($curl)); 
    } else { 
     $response = json_decode($json, true); 

     if (isset($response['cookie'])) { 
      $this->session->data['cookie'] = $response['cookie']; 
     } 

     curl_close($curl); 
    } 
} 

ответ

1

Это то, что это было отмечено несколько раз в списке выпуска GitHub для OpenCart. Это еще не исправлено, но this commit показывает, что вам нужно сделать, чтобы получить эту работу.

+0

Вы уже создали запрос на перенос от вашего фиксации? – shadyyx

+0

[Да] (https://github.com/opencart/opencart/pull/2606), но кажется, что все запросы на тягу игнорируются. –

+1

Да, у меня было такое же чувство, что я прекратил поддерживать проект вообще. Я хотел поддержать 2.0 RC, но все запросы на pull игнорировались, отклонялись или делали некоторые изменения, так что запросы не имели смысла в конце ... Честно говоря, я немного разочарован всем проектом и обновлением 2.0. Возможно, я ожидал от них большего. – shadyyx

Смежные вопросы