Selamat datang di blog CopyPasteKode, pada tutorial kali ini kita akan belajar bagaimana cara membuat fitur login dan logout pada Codeigniter 4. Tanpa berlama-lama langsung saja kita mulai project kita.
Sebelum mengikuti tutorial nya ada beberapa persyaratan yang harus dipenuhi terlebih dahulu
Requirements :
- Codeigniter 4 download disini
- File dist (berisi file booststrap 5 css dan js) download disini
- File icon (berisi SVG, icon bootstrap 5) download disini
Untuk teman-teman yang sudah mempunyai File Codeigniter 4, tidak perlu untuk mendownload lagi, hanya tinggal mendownload file bootstrap 5 dan icon, SVG dari bootstrap 5 pada link diatas, jika sudah teman-teman bisa langsung extract filenya kemudian pindahkan atau copy kemudian paste kan pada folder public di project Codeigniter 4 kalian. Seperti contoh gambar berikut :
Langkah-langkah membuat Login dan Logout pada Codeigniter 4 :
- Membuat Database
- Setting & Koneksi Database
- Membuat File Migrations
- Membuat Controllers Login & method login dan logout
- Membuat Models Login
- Membuat Views Form Login
- Membuat Controllers Dashboard
- Membuat Views Dashboard
- membuat Routing Login
- Membuat Pembatasan Akses dengan menggunakan Filter
Membuat Database
Buka Xampp, kemudian jalankan Apache & MySQL setelah itu buka phpMyAdmin pada web browser, lalu buat / tambahkan database baru dengan nama db_crud, seperti petunjuk gambar dibawah :
Setting & Koneksi Database
Setelah itu buka file .env, lalu modifikasi seperti contoh gambar berikut :
Sebelum di modifikasi :
Sesudah di modifikasi :
Jika teman-teman yang sudah mempunyai database dan telah terkoneksi dengan project Codeginter 4, teman-teman bisa langsung skip langkah diatas.
Membuat File Migrations
Setelah membuat dan meng-koneksikan datatabse pada project Codeginiter 4 kalian, sekarang kita akan masuk ke tahap selanjutnya yaitu tahap ke-2 "Membuat File Migrations"
Buat file pada folder app/Database/Migrations dengan menggunakan terminal pada visual studio code atau vs code. Buka Visual Studio kalian lalu jalankan Terminal nya dengan cara tekan Ctrl+` atau Ctrl+Shift+M kemudian arahkan ke terminal lalu ketikan perintah seperti dibawah :
php spark make:migration users
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class Users extends Migration
{
public function up()
{
$this->forge->addField([
'username' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'password' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'name' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'created_at' => [
'type' => 'DATETIME',
'null' => true,
],
'updated_at' => [
'type' => 'DATETIME',
'null' => true,
]
]);
$this->forge->addPrimaryKey('username', true);
$this->forge->createTable('users');
}
public function down()
{
$this->forge->dropTable('users');
}
}
Membuat Controllers Untuk Login
Buat file Pada app/Controllers, dengan nama Auth.php, kemudian isikan script berikut :
<?php
namespace App\Controllers;
use App\Models\Model_auth;
class Auth extends BaseController
{
public function __construct()
{
$this->validation = \Config\Services::validation();
$this->users = new Model_auth();
}
public function index()
{
if (!empty(session()->get('username'))) {
return redirect()->to('dashboard');
}
$data = [
'title' => 'Login',
'validation' => $this->validation,
];
return view('login/form_login', $data);
}
public function login()
{
if (!$this->validate([
'username' => [
'rules' => 'required',
'errors' => [
'required' => '{field} wajib diisi!',
'is_unique' => '{field} sudah terdaftar',
]
],
'password' => [
'rules' => 'required',
'errors' => [
'required' => '{field} wajib diisi!',
]
],
])) {
return redirect()->to('auth/index')->withInput()->with('validation', $this->validation);
}
$username = $this->request->getVar('username');
$password = $this->request->getVar('password');
$users = $this->users->where('username', $username)->first();
// jika usernya ada
if ($users) {
// cek password
if (password_verify($password, $users['password'])) {
session()->set([
'username' => $users['username'],
'name' => $users['name'],
'logged_in' => TRUE
]);
return redirect()->to('dashborad');
} else {
session()->setFlashdata('error', '<div class="alert alert-danger alert-dismissible fade show" role="alert">
Password Salah!
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>');
return redirect()->back();
}
} else {
session()->setFlashdata('error', '<div class="alert alert-danger alert-dismissible fade show" role="alert">
Username tidak terdaftar!
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>');
return redirect()->back();
}
}
public function logout()
{
session()->destroy();
return redirect()->to('auth');
}
}
Membuat Models Untuk Mengecek User
<?php
namespace App\Models;
use CodeIgniter\Model;
class Model_auth extends Model
{
protected $DBGroup = 'default';
protected $table = 'users';
protected $primaryKey = 'username';
protected $useAutoIncrement = false;
protected $insertID = 0;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
'username', 'password', 'name', 'created_at', 'updated_at'
];
// 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 = [];
}
Membuat Controllers Dashboard Untuk Tampilan Halaman Setelah Berhasil Login
Buka app/Controllers, kemudian tambahkan Controllers baru dengan nama Dashboard.php. Setelah itu isikan script berikut :
<?php
namespace App\Controllers;
class Dashboard extends BaseController
{
public function index()
{
$data['title'] = 'Dashboard';
return view('dashboard',$data);
}
}
Membuat Views Dashboard
Buka kembali folder app/Views dan tambahkan file baru dengan nama dashboard.php, kemudian isikan dengan script berikut :
Membuat Routes Login
Uji Coba atau Testing Fitur Login
Sebelum kita masuk ke dashboard kita harus melalui login terlebih dahulu, tetapi karena fitur login kita belum memiliki pembatasan akses maka User bisa langsung masuk ke halaman Dashboard tanpa harus login terlebih dahulu dengan mengetik kan URL berikut : http://localhost:8080/dashboard
Membuat Pembatasan Akses dengan menggunakan Filter
Filter ini termasuk jenis Controllers, dengan menggunakan Filter ini, kita bisa menjalankan method tertentu pada Controllers kita sebelum atau sesudah Controllers di eksekusi.
Buka folder Filters pada app/Filters, kemudian tambahkan file baru dengan nama UsersAuthFilter.php, kemudian isikan script berikut :
<?php namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class UsersAuthFilter implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (is_null(session()->get('logged_in'))) {
return redirect()->to(base_url('auth/index'));
}
}
//--------------------------------------------------------------------
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Do something here
}
}
- Dibagian before kita mengaktifkan 'csrf' untuk membuat token pada form yang kita gunakan.
- usersAuth, pada bagian ini bertujuan untuk melakukan pembatasan akses halaman sebelum login, dan kita tambahkan pengecualian dengan perintah : except yang berisikan method dari Controllers Auth yaitu "auth/*" dan juga "logout", ini digunakan karena saat kita mengakses halaman login sistem tidak mengarahkan kita untuk login lagi yang mana akan membuat sistem menjadi error.
Testing UsersAuthFilter
Sampai disini dulu ya teman-teman untuk tutorial, bagaimana cara membuat login dan logout pada Codeigniter 4, jika ada yang ingin teman-teman tanyakan jangan ragu untuk bertanya pada kolom komentar dan sampai jumpa pada tutorial-tutorial selanjutnya semoga bermanfaat bye...bye ^^
kok tidak bisa di donload yahh malahh ke halaman iklan semua
BalasHapusbisa kok ^^
Hapuscara lewatinnya klik download trus Verifikasi reCAPTCHA trus klik tulisan "Click here to continue" atau link dibawahnya, setelah itu akan diarahkan ke halaman iklan, klo sudah begini klik tombol kembali atau kembali ke tab sebelumnya kemudian klik tulisan "Get Link" warna biru klo di arahin ke halaman iklan lagi, tinggal kembali lagi atau ke tab yang pertama tadi nanti pasti diarahkan ke link download Google Drive