Merhaba, bana en çok sorulan sorular arasında olan Opencart RestApi login işlemini size kısaca anlatmaya çalışacağım. Daha önceki yazılarımda Opencart 2.0.X RestApi login işleminin versiyonları için nasıl yapılacağını anlatmıştım.
Bu yazımda da opencart 3 versiyonu için bu işlemin nasıl gerçekleştirileceğini anlatmaya çalışacağım.
- Adım: Öncelikle admin panelimizde api kullanıcısını oluşturmamız gerkiyor.
Buraya kadar tamamsa hemen login için denememizi yapalım. Ben yazılım olarak Postman kullanıyorum. Siz benzer harhangi bir program kullanabilirsiniz.
Opencart3’ün önceki sürümden tek farkı ekstra olarak username istemesi. Zaten public_html/catalog/controller/api/login.php dosyasını incelediğimizde, ne istediğini rahatlıkla görebiliriz.
<?php
class ControllerApiLogin extends Controller {
public function index() {
$this->load->language('api/login');
$json = array();
$this->load->model('account/api');
// Login with API Key
if(isset($this->request->post['username'])) {
$api_info = $this->model_account_api->login($this->request->post['username'], $this->request->post['key']);
} else {
$api_info = $this->model_account_api->login('Default', $this->request->post['key']);
}
if ($api_info) {
// Check if IP is allowed
$ip_data = array();
$results = $this->model_account_api->getApiIps($api_info['api_id']);
foreach ($results as $result) {
$ip_data[] = trim($result['ip']);
}
if (!in_array($this->request->server['REMOTE_ADDR'], $ip_data)) {
$json['error']['ip'] = sprintf($this->language->get('error_ip'), $this->request->server['REMOTE_ADDR']);
}
if (!$json) {
$json['success'] = $this->language->get('text_success');
$session = new Session($this->config->get('session_engine'), $this->registry);
$session->start();
$this->model_account_api->addApiSession($api_info['api_id'], $session->getId(), $this->request->server['REMOTE_ADDR']);
$session->data['api_id'] = $api_info['api_id'];
// Create Token
$json['api_token'] = $session->getId();
} else {
$json['error']['key'] = $this->language->get('error_key');
}
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
}