Tutorial Login Register di Codeigniter 4 dengan Fitur Authentication - Sinauo.Com

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';
}

Kemudian Buka file Validation.php yang masih ada di folder "app/Config" tambahkan kode berikut ini \Myth\Auth\Authentication\Passwords\ValidationRules::class, sehingga seperti berikut ini :

	/**
* 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.

Kemudian silahkan kalian menuju folder "app/ThirdParty/myth-auth/src/Config/" cari file dengan nama Auth.php kemudian cari beberapa kode berikut ini :
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


Form Register



Sekarang kalian bisa menguji dan mencoba fitur Authention pada form register,login dan logout di website kalian.

2 comments

  1. Klw di akses dashboard auto masuk kita
    Gmna cara mengatasinya ?

    ReplyDelete
  2. Menggunakan fitur remember me di aktifkan gan

    ReplyDelete