CodeIgniter 4 merupakan salah satu framework PHP yang ringan, cepat, dan mudah digunakan. Salah satu kebutuhan utama dalam membangun aplikasi web adalah fitur login dan register sebagai pintu gerbang autentikasi pengguna. Pada artikel ini, kita akan membahas langkah-langkah lengkap untuk membuat sistem login dan register sederhana dengan CodeIgniter 4, mulai dari konfigurasi awal, pembuatan model, controller, hingga pembuatan tampilan. Tutorial ini cocok untuk pemula yang ingin memahami dasar autentikasi di CodeIgniter 4.
1. Persiapan Proyek CodeIgniter 4
Sebelum memulai, pastikan CodeIgniter 4 sudah terinstal. Kamu bisa menginstalnya menggunakan composer dengan perintah:
composer create-project codeigniter4/appstarter ci4-login
Setelah itu, jalankan server lokal:
php spark serve
Jika CodeIgniter sudah berjalan, kita siap masuk ke pembuatan fitur login dan register.
2. Membuat Tabel User di Database
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Pada kolom password, kita akan menyimpan password yang telah di-hash agar lebih aman.
3. Konfigurasi Koneksi Database
Buka file: app/Config/Database.php
Sesuaikan dengan konfigurasi lokalmu:
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'ci4_auth',
'DBDriver' => 'MySQLi',
];
4. Membuat Model User
Model digunakan untuk berinteraksi dengan tabel users.
Buat file baru: app/Models/UserModel.php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = ['username', 'email', 'password'];
protected bool $allowEmptyInserts = false;
protected bool $updateOnlyChanged = true;
protected array $casts = [];
protected array $castHandlers = [];
// Dates
protected $useTimestamps = false;
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
// Validation
protected $validationRules = [];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
// Callbacks
protected $allowCallbacks = true;
protected $beforeInsert = [];
protected $afterInsert = [];
protected $beforeUpdate = [];
protected $afterUpdate = [];
protected $beforeFind = [];
protected $afterFind = [];
protected $beforeDelete = [];
protected $afterDelete = [];
}
5. Membuat Controller Auth
Controller ini akan mengatur register, login, dan logout.
Buat file: app/Controllers/Auth.php
Register:
public function register()
{
return view('auth/register');
}
public function saveRegister(){
$userModel = new UserModel();
$cekUsername = $userModel->where('username', $this->request->getPost('username'))->first();
$cekEmail = $userModel->where('email', $this->request->getPost('email'))->first();
if ($cekUsername) {
return redirect()->back()->with('error', 'Username sudah digunakan!');
}
if ($cekEmail) {
return redirect()->back()->with('error', 'Email sudah digunakan!');
}
$data = [
'username' => $this->request->getPost('username'),
'email' => $this->request->getPost('email'),
'password' => password_hash($this->request->getPost('password'), PASSWORD_DEFAULT),
];
$userModel->insert($data);
return redirect()->to('/login')->with('success', 'Register berhasil!');
}
Login:
public function login()
{
return view('auth/login');
}
public function doLogin(){
$session = session();
$userModel = new UserModel();
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
$user = $userModel->where('email', $email)->first();
if ($user) {
if (password_verify($password, $user['password'])) {
$session->set([
'user_id' => $user['id'],
'username' => $user['username'],
'logged_in'=> true
]);
return redirect()->to('/');
} else {
return redirect()->back()->with('error', 'Password salah!');
}
} else {
return redirect()->back()->with('error', 'Email tidak ditemukan!');
}
}
Logout:
public function logout()
{
session()->destroy();
return redirect()->to('/login');
}
6. Membuat Tampilan Register dan Login
Tampilan Register: app/Views/auth/register.php
Tampilan Login: app/Views/auth/login.php
7. Membuat Controller Home
namespace App\Controllers;
use App\Libraries\ResponseApi;
class Home extends BaseController{
public function index(){
if(!session()->get('logged_in')){
return redirect()->to('/login');
}
return view('home');
}
}
Tambahkan file home.php pada View/home.php:
8. Menambahkan Routing
Tambahkan ke file app/Config/Routes.php:
$routes->get('/', 'Home::index');
$routes->get('/register', 'Auth::register');
$routes->post('/save-register', 'Auth::saveRegister');
$routes->get('/login', 'Auth::login');
$routes->post('/do-login', 'Auth::doLogin');
$routes->get('/logout', 'Auth::logout');
Kesimpulan
Membangun sistem login dan register di CodeIgniter 4 cukup mudah dan terstruktur. Dengan memanfaatkan fitur bawaan seperti Model, Controller, dan View, kita dapat membuat autentikasi yang aman menggunakan hash password. Sistem sederhana ini bisa dikembangkan menjadi lebih kompleks, seperti verifikasi email, reset password, atau penerapan role dan level akses pengguna.
Untuk melihat artikel yang lain, bisa klik Disini

No comments:
Post a Comment