Membuat API Login dengan CodeIgniter 4
CodeIgniter 4 adalah framework PHP yang ringan dan cepat, cocok untuk membangun API autentikasi. Artikel ini menjelaskan langkah-langkah membuat API login menggunakan CodeIgniter 4.
1. Menyiapkan Struktur Database
Buat tabel user untuk menyimpan data pengguna:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
api_token VARCHAR(255)
);
Gunakan hashing untuk menyimpan password menggunakan fungsi password_hash
.
2. Membuat Model User
Buat file model di app/Models/UserModel.php
:
<?php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model {
protected $table = 'users';
protected $primaryKey = 'id';
protected $allowedFields = ['username', 'password', 'api_token'];
}
?>
3. Membuat Controller Login
Buat file controller di app/Controllers/Api/Login.php
:
<?php
namespace App\Controllers\Api;
use App\Models\UserModel;
use CodeIgniter\RESTful\ResourceController;
class Login extends ResourceController {
public function authenticate() {
$model = new UserModel();
$username = $this->request->getVar('username');
$password = $this->request->getVar('password');
$user = $model->where('username', $username)->first();
if (!$user || !password_verify($password, $user['password'])) {
return $this->failUnauthorized('Invalid credentials');
}
$apiToken = bin2hex(random_bytes(32));
$model->update($user['id'], ['api_token' => $apiToken]);
return $this->respond([
'status' => 'success',
'message' => 'Login successful',
'api_token' => $apiToken
]);
}
}
?>
4. Menambahkan Rute
Tambahkan rute API di app/Config/Routes.php
:
$routes->post('api/login', 'Api\Login::authenticate');
5. Pengujian API
Gunakan aplikasi seperti Postman untuk menguji endpoint POST /api/login
dengan body JSON berikut:
{
"username": "admin",
"password": "admin123"
}
Kesimpulan
API login di CodeIgniter 4 memungkinkan autentikasi yang aman menggunakan token API. Pastikan untuk menyimpan password dalam format hash dan memberikan validasi input yang baik.