Autentikasi Login dan Register Menggunakan CodeIgniter 4

Dalam pengembangan aplikasi web modern, fitur login dan register merupakan komponen penting 🔑 untuk mengamankan akses pengguna. Dengan CodeIgniter 4, kamu dapat membuat sistem autentikasi yang ringan, cepat, dan mudah dikustomisasi tanpa harus menggunakan library eksternal yang kompleks.
Panduan ini akan membahas langkah demi langkah membuat sistem login dan register di CodeIgniter 4 mulai dari konfigurasi database, model, controller, hingga implementasi session 🧩.
1. Persiapan Lingkungan
Langkah Awal
Sebelum mulai coding, pastikan kamu sudah menyiapkan lingkungan berikut:
- ✅ CodeIgniter 4 (versi terbaru)
- ✅ Server lokal (XAMPP, Laragon, atau LAMP)
- ✅ MySQL aktif dan bisa diakses
- ✅ Browser dan Postman (untuk pengujian API)
Instal CodeIgniter 4 menggunakan perintah:
composer create-project codeigniter4/appstarter auth-ci4
2. Membuat Database dan Tabel
Struktur Database
Buka phpMyAdmin lalu buat database bernama ci4_auth. Jalankan query berikut untuk membuat tabel users:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Tabel ini akan menyimpan data pengguna untuk proses login dan registrasi 🔒.
3. Konfigurasi Database
Edit File .env
Buka file .env di root proyek, lalu aktifkan pengaturan database dengan menghapus tanda komentar (#):
database.default.hostname = localhost
database.default.database = ci4_auth
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
Pastikan database sudah terkoneksi dengan baik sebelum melanjutkan ke tahap berikutnya ✅.
4. Membuat Model User
Model untuk Mengelola Data Pengguna
Buat file baru di app/Models/UserModel.php dengan isi sebagai berikut:
<?php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model {
protected $table = 'users';
protected $primaryKey = 'id';
protected $allowedFields = ['username', 'email', 'password', 'created_at'];
}
?>
Model ini akan digunakan untuk interaksi CRUD dengan tabel users.
5. Membuat Controller Auth
Menangani Proses Login dan Register
Buat file app/Controllers/Auth.php dan tambahkan kode berikut:
<?php
namespace App\Controllers;
use App\Models\UserModel;
use CodeIgniter\Controller;
class Auth extends Controller {
public function register() {
helper(['form']);
echo view('register');
}
public function save() {
$userModel = new UserModel();
$data = [
'username' => $this->request->getVar('username'),
'email' => $this->request->getVar('email'),
'password' => password_hash($this->request->getVar('password'), PASSWORD_DEFAULT)
];
$userModel->save($data);
return redirect()->to('/login');
}
public function login() {
helper(['form']);
echo view('login');
}
public function auth() {
$session = session();
$userModel = new UserModel();
$email = $this->request->getVar('email');
$password = $this->request->getVar('password');
$data = $userModel->where('email', $email)->first();
if ($data) {
$pass = $data['password'];
if (password_verify($password, $pass)) {
$sessionData = [
'id' => $data['id'],
'username' => $data['username'],
'email' => $data['email'],
'logged_in' => true
];
$session->set($sessionData);
return redirect()->to('/dashboard');
} else {
$session->setFlashdata('error', 'Password salah!');
return redirect()->to('/login');
}
} else {
$session->setFlashdata('error', 'Email tidak ditemukan!');
return redirect()->to('/login');
}
}
public function logout() {
session()->destroy();
return redirect()->to('/login');
}
}
?>
6. Membuat View Login dan Register
Template Sederhana
Buat dua file di folder app/Views:
register.php
<form method="post" action="/save">
<input type="text" name="username" placeholder="Username" required><br>
<input type="email" name="email" placeholder="Email" required><br>
<input type="password" name="password" placeholder="Password" required><br>
<button type="submit">Daftar</button>
</form>
login.php
<form method="post" action="/auth">
<input type="email" name="email" placeholder="Email" required><br>
<input type="password" name="password" placeholder="Password" required><br>
<button type="submit">Login</button>
</form>
7. Menambahkan Routing
Konfigurasi Routes.php
Buka app/Config/Routes.php dan tambahkan baris berikut:
$routes->get('/register', 'Auth::register');
$routes->post('/save', 'Auth::save');
$routes->get('/login', 'Auth::login');
$routes->post('/auth', 'Auth::auth');
$routes->get('/logout', 'Auth::logout');
8. Menambahkan Dashboard
Halaman Setelah Login
Buat file app/Views/dashboard.php:
<?php $session = session(); ?>
<h2>Halo, <?= $session->get('username'); ?> 👋</h2>
<p>Selamat datang di dashboard!</p>
<a href="/logout">Logout</a>
9. Menambahkan Validasi Form
Pastikan Input Valid ✅
Tambahkan validasi di fungsi save() sebelum menyimpan data:
if (! $this->validate([
'username' => 'required|min_length[3]',
'email' => 'required|valid_email|is_unique[users.email]',
'password' => 'required|min_length[6]'
])) {
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
10. Mengamankan Password
Gunakan Hashing 🔐
CodeIgniter secara otomatis mendukung fungsi password_hash() dan password_verify() agar password tersimpan aman di database.
11. Membatasi Akses ke Halaman Dashboard
Gunakan Session
Tambahkan pemeriksaan di controller Dashboard agar hanya user login yang bisa mengakses:
if (! session()->get('logged_in')) {
return redirect()->to('/login');
}
12. Menambahkan Logout
Hapus Session Saat Keluar
Method logout() di controller sudah menghapus session aktif dengan session()->destroy() agar akun benar-benar keluar dari sistem.
13. FAQ (Pertanyaan Umum)
- Apakah CodeIgniter 4 memiliki library auth bawaan? Tidak, tetapi mudah dibuat manual.
- Bagaimana cara menyimpan password dengan aman? Gunakan
password_hash(). - Apakah bisa menambah fitur “remember me”? Bisa dengan cookie.
- Bisa integrasi dengan API JWT? Ya, dengan library tambahan.
- Bagaimana cara validasi email unik? Gunakan rule
is_unique. - Bisa pakai template Bootstrap? Bisa, tinggal tambahkan di view.
- Bagaimana cara redirect otomatis setelah login? Gunakan
redirect()->to('/dashboard'). - Bisa login pakai username? Ya, cukup ubah query pencarian.
- Apakah session tersimpan di file? Ya, default-nya di folder
writable/session. - Bisa login via API? Bisa dengan token JWT.
- Bagaimana cara logout otomatis? Gunakan timeout session.
- Apa yang terjadi jika password salah? Akan tampil pesan error.
- Bagaimana menambahkan verifikasi email? Gunakan library
PHPMailer.
Kesimpulan
Membangun sistem login dan register di CodeIgniter 4 sangat mudah 🚀. Framework ini memberikan fleksibilitas penuh untuk mengelola autentikasi, validasi input, dan keamanan password. Kamu bisa menambahkan fitur lanjutan seperti verifikasi email, reset password, dan otentikasi berbasis token untuk sistem yang lebih profesional 🔒.
Belum ada Komentar untuk "Autentikasi Login dan Register Menggunakan CodeIgniter 4"
Posting Komentar