CodeIgniter 4 menyediakan framework yang ringan dan fleksibel untuk membangun aplikasi web

Cara Membuat Login di CodeIgniter 4

CodeIgniter 4 menyediakan framework yang ringan dan fleksibel untuk membangun aplikasi web. Artikel ini menjelaskan langkah-langkah membuat sistem login menggunakan CI4 dengan validasi dan keamanan yang baik.

1. Persiapan Proyek CodeIgniter

Pastikan Anda sudah menginstal CodeIgniter 4. Jika belum, Anda dapat menginstalnya dengan perintah berikut:

composer create-project codeigniter4/appstarter nama-proyek

Jalankan server pengembangan dengan perintah:

php spark serve

2. Konfigurasi Database

Hubungkan aplikasi dengan database Anda di file .env. Contoh konfigurasi:

database.default.hostname = localhost
database.default.database = testdb
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi

3. Membuat Tabel User

Buat tabel user dengan SQL berikut:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL
);

Tambahkan beberapa data dummy untuk login:

INSERT INTO users (username, password) VALUES 
('admin', PASSWORD('admin123')),
('user', PASSWORD('user123'));

4. Membuat Model untuk 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'];
}
?>

5. Membuat Controller untuk Login

Buat file controller di app/Controllers/Login.php:

<?php
namespace App\Controllers;

use App\Models\UserModel;

class Login extends BaseController {
    public function index() {
        return view('login');
    }

    public function authenticate() {
        $session = session();
        $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'])) {
            $session->set([
                'id' => $user['id'],
                'username' => $user['username'],
                'logged_in' => true
            ]);
            return redirect()->to('/dashboard');
        } else {
            $session->setFlashdata('error', 'Username atau Password salah.');
            return redirect()->to('/login');
        }
    }

    public function logout() {
        session()->destroy();
        return redirect()->to('/login');
    }
}
?>

6. Membuat View Login

Buat file view di app/Views/login.php:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <h2>Login</h2>
        <?php if (session()->getFlashdata('error')) : ?>
            <div class="alert alert-danger">
                <?= session()->getFlashdata('error') ?>
            </div>
        <?php endif; ?>

        <form action="/login/authenticate" method="post">
            <div class="mb-3">
                <label for="username" class="form-label">Username</label>
                <input type="text" name="username" class="form-control" required>
            </div>
            <div class="mb-3">
                <label for="password" class="form-label">Password</label>
                <input type="password" name="password" class="form-control" required>
            </div>
            <button type="submit" class="btn btn-primary">Login</button>
        </form>
    </div>
</body>
</html>

7. Menambahkan Middleware untuk Halaman Terproteksi

Gunakan middleware untuk melindungi halaman seperti dashboard. Tambahkan middleware ke file app/Filters/AuthCheck.php:

<?php
namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class AuthCheck implements FilterInterface {
    public function before(RequestInterface $request, $arguments = null) {
        if (!session()->get('logged_in')) {
            return redirect()->to('/login');
        }
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) {
        // Tidak diperlukan
    }
}
?>

Tambahkan middleware ini ke file app/Config/Filters.php:

'filters' => [
    'authcheck' => ['before' => ['dashboard/*']],
]

8. Kesimpulan

Sistem login di CodeIgniter 4 dapat dibuat dengan mudah menggunakan kombinasi Model, View, dan Controller (MVC). Dengan fitur bawaan seperti session dan middleware, Anda dapat menjaga keamanan dan membangun sistem autentikasi yang efisien.

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