Membuat API Login dengan CodeIgniter 4

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.

Check Also

Migrasi Database dengan CodeIgniter 4

Migrasi Database dengan CodeIgniter 4 CodeIgniter 4 menyediakan fitur migrasi database untuk mengelola perubahan skema …

Verified by MonsterInsights