Tutorial Login Register di Codeigniter 4 dengan Fitur Authentication
Pada kesempatan kali ini admin akan membahas bagaimana cara membuat login register di framework Codeigniter 4 dengan fitur Authentication. Authentication merupakan suatu proses identifikasi suatu pengguna / user. Dengan fitur Authentication tentunya akan mendapatkan banyak keuntungan seperti data situs menjadi lebih aman, terdapat filter dalam pembatasan hak akses, dan masih banyak lagi.
Dalam membuat sebuah aplikasi terkadang kita juga membutuhkan fitur register, lupa password, login dan logout Seperti situs-situs besar toko online, website komunitas, marketplace dan lain sebagainya. Alasan suatu website memberikan fitur auth adalah agar pengguna juga bisa mempunyai akses sebagai user.
Berikut ini cara membuat fitur login di codeigniter 4.
Instalasi Codeigniter 4
Bagi kalian yang belum tahu bagaimana cara menginstal framework codeigniter 4 silahkan baca artikel Cara Instalasi Codeigniter 4
Membuat Koneksi Database
Silahkan kalian buat database kalian di Mysql Jika kalian belum tahu cara membuat database di mysql silahkan baca Cara membuat database di Mysql. kemudian setelah membuat database mysql silahkan buka file .env yang ada di folder root Codeigniter kalian :
database.default.hostname = localhost
database.default.database = ci4
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi
selain cara diatas kalian juga bisa menggunakan file Database.php yang ada di folder "app/config"
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'latihan',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'development'),
'cacheOn' => false,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
Silahkan sesuaikan dengan yang ada di komputer kalian mulai dari nama database, username database, dan passwod database. dan jangan lupa juga pada bagian CI_ENVIRONMENT = production diganti menjadi CI_ENVIRONMENT = development karena masih dalam tahap pengembangan/latihan dilocal.
Installasi Package Myth-Auth
Silahkan kalian buka terminal kemudian masuk kedalam direktori project kalian dan masuk dalam folder "app/ThirdParty". Jika sudah silahkan kalian Clone package Myth-Auth ketikan perintah git clone https://github.com/lonnieezell/myth-auth.git tunggu sampai semua instalasi selesai.
Konfigurasi Package Myth-Auth
Silahkan kalian kembali ke awal folder root Codeigniter kalian atau ketikan "cd ../../" kemudian migrate semua tabel yang disetiadakn oleh package myth-auth dengan cara ketikan perintah php spark migrate -all diterminal kalian.
Kemudian silahkan buka file Autoload.php yang ada di folder "app/Config/Autoload.php" tambahkan kode 'Myth\Auth' => APPPATH .'ThirdParty/myth-auth/src' sehingga seperti pada kode berikut ini :
$psr4 = [
'App' => APPPATH, // To ensure filters, etc still found,
APP_NAMESPACE => APPPATH, // For custom namespace
'Config' => APPPATH . 'Config',
'Myth\Auth' => APPPATH .'ThirdParty/myth-auth/src',
];
Tujuan penambahan kode diatas merupakan untuk konfigurasi / pendaftaran package yang ada didalam folder ThirdParty
Untuk mengaktifkan verifikasi kode melalui email silahkan ubah default nama dan email yang ada di file Email.php yang ada di folder "app/Config/Email.php" ubah sesuai dengan kebutuhan kalian :
* @var string
*/
public $fromEmail = "admin@sinuo.com";
/**
* @var string
*/
public $fromName = "Sinauo.com";
masih didalam directory folde "app/config" silahkan anda buka file Filters.php tambahkan kode berikut ini
'login' => \Myth\Auth\Filters\LoginFilter::class,
'role' => \Myth\Auth\Filters\RoleFilter::class,
'permission' => \Myth\Auth\Filters\PermissionFilter::class,
sehingga menjadi seperti dibawah ini
<?php namespace Config;
use CodeIgniter\Config\BaseConfig;
class Filters extends BaseConfig
{
// Makes reading things below nicer,
// and simpler to change out script that's used.
public $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'honeypot' => \CodeIgniter\Filters\Honeypot::class,
'login' => \Myth\Auth\Filters\LoginFilter::class,
'role' => \Myth\Auth\Filters\RoleFilter::class,
'permission' => \Myth\Auth\Filters\PermissionFilter::class,
];
// Always applied before every request
public $globals = [
'before' => [
//'honeypot'
// 'csrf',
],
'after' => [
'toolbar',
//'honeypot'
],
];
// Works on all of a particular HTTP method
// (GET, POST, etc) as BEFORE filters only
// like: 'post' => ['CSRF', 'throttle'],
public $methods = [];
// List filter aliases and any before/after uri patterns
// that they should run on, like:
// 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']],
public $filters = [];
}
Masih dalam folder "app/Config" cari file Routes.php kemudian cari kode tambahkan beberapa kode dibawah kode berikut ini $routes->get('/', 'Home::index'); sehingga menjadi seperti dibawah ini :
<?php namespace Config;
// Create a new instance of our RouteCollection class.
$routes = Services::routes();
// Load the system's routing file first, so that the app and ENVIRONMENT
// can override as needed.
if (file_exists(SYSTEMPATH . 'Config/Routes.php'))
{
require SYSTEMPATH . 'Config/Routes.php';
}
/**
* --------------------------------------------------------------------
* Router Setup
* --------------------------------------------------------------------
*/
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);
/**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Home::index');
$routes->group('', ['filter' => 'login'], function($routes){
$routes->get('dashboard', 'Home::dashboard');
});
/**
* --------------------------------------------------------------------
* Additional Routing
* --------------------------------------------------------------------
*
* There will often be times that you need additional routing and you
* need to it be able to override any defaults in this file. Environment
* based routes is one such time. require() additional route files here
* to make that happen.
*
* You will have access to the $routes object within that file without
* needing to reload it.
*/
if (file_exists(APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php'))
{
require APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php';
}
/**
* Stores the classes that contain the
* rules that are available.
*
* @var array
*/
public $ruleSets = [
\CodeIgniter\Validation\Rules::class,
\CodeIgniter\Validation\FormatRules::class,
\CodeIgniter\Validation\FileRules::class,
\CodeIgniter\Validation\CreditCardRules::class,
\Myth\Auth\Authentication\Passwords\ValidationRules::class,
];
/**
* Specifies the views that are used to display the
* errors.
public $requireActivation = 'Myth\Auth\Authentication\Activators\EmailActivator';
Kode diatas digunakan untuk aktivasi melalui email jika kita melakukan registrasi user baru dikarenakan ini masih dalam sesi laihan/pengembangan maka kita disable dulu fungsi tersebut caranya ubah kode diatas menjadi seperti berikut ini :
public $requireActivation = false;
Jika kalian ingin mengaktifkan fitur remember me pada form login, masih dalam file yang sama yaitu Auth.php kemudian cari kode public $allowRemembering = false; ubah menjadi seperti berikut ini :public $allowRemembering = true;
proses konfigurasi sudah selesai.Dan jangan lupa buat kontroler baru atau buka file Home.php kemudian tambahkan function dashboard seperti dibawah ini :
<?php namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
return view('welcome_message');
}
public function dashboard(){
echo "selemat datang dihalaman dashboard admin";
}
//--------------------------------------------------------------------
}
Menjalankan Testing Konfigurasi Authention di Codeigniter 4
Setelah semua konfigurasi selesai silahkan anda jalakan Codeigniter 4 kalian ketikan perintah berikut di terminal kalian
php spark serve
ketikan alamat berikut di web browser kalian : http://localhost:8080/dashboard
Maka akan diarahkan ke form login
Sekarang kalian bisa menguji dan mencoba fitur Authention pada form register,login dan logout di website kalian.
Klw di akses dashboard auto masuk kita
ReplyDeleteGmna cara mengatasinya ?
Menggunakan fitur remember me di aktifkan gan
ReplyDeleteThis comment has been removed by the author.
ReplyDeletedi buat hak akses setiap role nya gan
Deletekalau form pendaftaran ada pesan kesalahan seperti ini apa yang salah ya?
ReplyDeleteFailed to send activation message to: {0}
cek lagi mas di kodingannya disamakan kalao hanya mengira2 errornya susah mas coba cek di email.php
Deletebro kalu pas bagian registernya itu yang bisa menambahkan usernya hanya admin itu bagaimana?
ReplyDeleteCara upload image di form register gimana gan
ReplyDelete