Media Pengembangan Web & App | by APPKEY

Pembuatan Website Laravel Apa Itu Laravel Airlock? | Seri Belajar Laravel

Apa Itu Laravel Airlock? | Seri Belajar Laravel

-

Kita sering sekali mendengar Laravel Airlock pada aneka tutorial belajar framework Laravel, tapi sudahkah Anda tahu apa itu Laravel Airlock?

Laravel Airlock adalah sebuah fitur yang sukses mencuri perhatian pengguna framework Laravel. Kemunculan pertama dari Laravel Airlock adalah pada Laravel 7, dan fitur ini pun masih banyak digunakan dalam produksi software sampai hari ini.

Apa itu Laravel Airlock dan bagaimana cara menggunakannya? Mari cari tahu ulasan lengkap seputar Laravel Airlock tutorial pada artikel seri belajar framework Laravel kali ini. Selamat membaca!

Apa Itu Laravel Airlock dan Manfaatnya untuk Anda?

white-hat-hacker-1

Sebelum lompat ke bagaimana cara memakai Laravel Airlock, Anda harus memahami betul-betul apa itu Laravel Airlock terlebih dahulu sebagai dasar belajar Laravel pemula. Laravel Airlock adalah fitur Laravel yang banyak dimanfaatkan developer untuk melakukan otentikasi Single Page Application (SPA).

Laravel Airlock adalah sistem yang berfungsi melengkapi fitur-fitur lain dalam Laravel untuk membuat beraneka fungsi autentikasi. Sebelum kehadiran Laravel Airlock, sesungguhnya sudah ada sistem serupa bernama Laravel Passport. Hanya saja, Laravel Airlock adalah fitur yang lebih canggih dibanding kawannya, si Laravel Passport.

Package Laravel Airlock mempunyai sistem yang lebih sederhana dan simpel untuk melakukan proses generate API Token. Inilah alasan mengapa banyak user beralih memakai Laravel Airlock karena proses generate tokennya yang tidak sekompleks Oauth. Sebagai catatan penting dalam belajar Laravel Pemula, ketika Anda mempelajari aspek token,  maka Anda akan bersinggungan dengan Application Programmer Interface (API). API sendiri digunakan untuk memproteksi data-data pada aplikasi dari oknum-oknum nakal seperti hacker.

Artikel Terkait  Meta Deskripsi Dan Manfaatnya Dalam Pengembangan Situs Web

Jadi, dapat dikatakan bahwa Laravel Airlock adalah sebuah fitur khusus Laravel untuk membangun elemen keamanan berbasis autentikasi pada aplikasi. Laravel Airlock sendiri banyak digunakan untuk autentikasi SPA, aplikasi mobile, dan sistem lainnya yang menggunakan basis dasar token API. Kinerja Airlock juga sangat ringan. Pun Anda bebas memastikan setiap request API sudah punya sesi otentikasi serta token yang valid untuk mengamankan data-data pada aplikasi.

Kelebihan dari menggunakan Laravel Airlock adalah waktu tokennya yang bisa bertahan lama (tidak cepat expired). Namun user juga bisa untuk menghapus (revoke) token kapanpun ia mau atau merasa perlu untuk menghapusnya.

Lebih jauh lagi, ada banyak manfaat lain dari menggunakan Laravel Airlock pada proses pengembangan aplikasi Anda. Beberapa manfaat tersebut adalah:

  • Kinerja yang ringan dan cepat.
  • Bisa mengakses beragam API Route di Laravel secara bersamaan memakai web guard.
  • Bisa otomatis menyimpan session dari suatu ID user sehingga user tersebut tidak perlu melewati proses autentikasi request berkali-kali.
  • Lebih mudah untuk mengatur kinerja autentkasi pada front end aplikasi atau website.

Seperti Apa Cara Kerja Laravel Airlock?

Ini adalah pertanyaan utama kita semua: bagaimana cara keja dari Laravel Airlock? Tenang, kami sudah mempersiapkan Laravel Airlock tutorial yang bisa Anda simak sekarang.

Mari kita mulai dengan gambaran besar cara kerja Laravel Airlock. Untuk Anda yang pernah memakai Laravel Passport, mungkin perasaan Anda tidak akan jauh berbeda saat berpindah ke Airlock. Fitur-fitur dan fungsi antara Airlock dan Passport tidak jauh berbeda, keduanya bisa Anda gunakan untuk melakukan otentikasi stateless. Jadi, untuk bisa mengimplementasikan autentikasi Airlock ke sistem aplikasi, Anda perlu memiliki data-data terkait user seperti ID. Data-data tersebut yang akan dikirim sebagai request ke API dalam proses identitas session.

Jika sumber request terpercaya, maka sistem Airlock selanjutnya akan menjalankan middleware EnsureFrontendRequestsAreStateful guna memastikan route API Anda menjadi stateful. Selain itu, Laravel Airlock juga akan mengecek jika request datang dari domain yang sudah pernah dikonfigurasi di airlock.stateful atau datang dari source yang lain.

Kalau request user datang dari sumber yang sama, selanjutnya Laravel Airlock akan mengirimkan data-data berupa: StartSession, EncryptCookies, VerifyCsrfToken, dan AddQueuedCookiesToResponse. Keempat data inilah yang akan mengizinkan request user untuk memakai web guard Laravel. Hasilnya, sistem autentikasi yang tadinya stateless akan menjadi stateful.

Untuk lebih jelasnya, tahapan-tahapan penggunaan Laravel Airlock adalah sebagai berikut:

Artikel Terkait  Mau Jadi Programmer, Haruskah Pilih Jurusan Rekayasa Perangkat Lunak?

Menginstal dan Mengonfigurasi Airlock

Pertama, lakukan instalasi Laravel Airlock. Seperti yang sudah dijelaskan sebelumnya, Laravel Airlock adalah fitur yang terdapat pada Laravel 7. Jadi, Anda harus menginstal Laravel 7 terlebih dahulu. Caranya:

  1. Buka Command Line.
  2. Ketik kode berikut: composer create-project –prefer-dist laravel/laravel dw-airlock
  3. Cek kembali semua persyaratan (requirement) instalasi terpenuhi. Klik ‘run’. Proses instal akan berlangsung otomatis.
  4. Begitu selesai, buka folder ‘dw-airlock’ > cari ‘Laravel Airlock’ > install memakai command:
    composer require laravel/airlock

Begitu instalasi selesai, lanjutkan prosesnya dengan konfigurasi. Konfigurasi dilakukan dengan cara berikut:

  1. Buka command > input perintah:

php artisan vendor:publish –provider=”Laravel\Airlock\AirlockServiceProvider”

  1. Buka file .env > masukkan informasi database Anda. Contoh:

DB_CONNECTION=mysql
DB_HOST=128.0.0.1
DB_PORT=3205
DB_DATABASE=dw-airlock
DB_USERNAME=admin
DB_PASSWORD=midam

  1. Publish konfigurasi.
  2. Saat mempublish konfigurasi, Anda bisa sekalian membuat file migration > gunakan kode perintah artisan ini untuk melakukan generate pada struktur database:
    php artisan migrate
  3. Lakukan register middleware Airlock ke route API: buka file app/Http/Kernel.php > modifikasi fungsi $middlewareGroups > ubah API menjadi contoh:

'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],

  1. Hubungkan ke user: buka file app/User.php > tambahkan kode ini dan modifikasi:

<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Airlock\HasApiTokens;
class User extends Authenticatable
{
use Notifiable, HasApiTokens;

Selesai.

Lakukan Autentikasi dan Meng-generate Token

Di sini Anda bisa membuat fitur autentikasi untuk memungkinkan user melakukan generate sejumlah token. Caranya adalah:

Artikel Terkait  Jasa Pembuatan Website Untuk Toko Online

  1. Buat dummy user dengan cara melakukan generate seeder:

command php artisan make:seeder UserTableSeeder

  1. Buka file database/seeds/UserTableSeeder.php
  2. Lakukan konfigurasi berikut:

<?php
use Illuminate\Database\Seeder;
use App\User;
class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::create([
'name' => 'Ayu Dewi’,
'email' => 'admin@appkey.id',
'password' => asdkfhl('secret')
]);
}
}

  1. Lakukan implementasi data memakai kode artisan php artisan db:seed–class=UserTableSeeder.
  2. Gunakan 1 controller untuk membuat dan menjalankan fitur-fitur yang dibutuhkan > buka command line > generate new controller (php artisan make:controller UserController).

public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email|exists:users,email',
'password' => 'required',
'type' => 'required'
]);
$user = User::where('email', $request->email)->first();
if (!Hash::check($request->password, $user->password)) {
return response()->json(['status' => 'failed', 'data' => 'Password Salah']);
}
return response()->json(['status' => 'success', 'data' => $user->createToken($request->type)->plainTextToken]);
}

  1. Terakhir dalam proses ini, buat API yang diproteksi dengan otentikasi. Input kode metode berikut pada file yang sama dengan di atas:

public function index() { $users = User::orderBy(‘created_at’, ‘DESC’)->paginate(10); return response()->json([‘status’ => ‘success’, ‘data’ =>$users]); }

  1. Input juga kode tambahan: use Illuminate\Support\Facades\Hash; use App\User;
  2. Lakukan definisi routing untuk kedua fungsi di file routes/api.php dan modifikasi struktur kode seperti contoh:

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::group(['middleware' => 'auth:airlock'], function() {
Route::get('/users', 'UserController@index');
});
Route::post('/login', 'UserController@login');

Mengeset Abilities untuk Token

belajar-python-dan-ruby

Anda bisa memberikan abilities untuk setiap token. Abilities yang diberikan akan menjadikan user mampu mengakses fitur-fitur tertentu yang telah ditetapkan pada token. Cara mengeset abilities adalah:

  1. Buka command line > buat migration baru:

php artisan make:migration add_field_role_to_users_table

Modifikasi file migration baru:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddFieldRoleToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->enum('role', ['admin', 'users'])->after('password');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('role', ['admin', 'users']);
});
}
}

  1. Buka file ‘php’ > modifikasi:

<?php
use Illuminate\Database\Seeder;
use App\User;
class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::truncate();
User::create([
'name' => 'Ayu Dewi,
'email' => 'admin@appkey.id',
'password' => asdfghjkl('secret'),
'role' => 'admin'
]);
User::create([
'name' => 'Bagas Dewa',
'email' => 'bagas@daengweb.id',
'password' => asdfghjkl('secret'),
'role' => 'users'
]);
}
}

  1. Jalankan seeder memakai command php artisan db:seed –class=UserTableSeeder.
  2. Modifikasi metode login: buka file ‘UserController.php’ > modifikasi:

public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email|exists:users,email',
'password' => 'required',
'type' => 'required'
]);
$user = User::where('email', $request->email)->first();
if (!Hash::check($request->password, $user->password)) {
return response()->json(['status' => 'failed', 'data' => 'Password Salah']);
}
$abilities = $user->role == 'admin' ? ['user:index', 'user:create']:['user:index'];
return response()->json([
'status' => 'success',
'data' => $user->createToken($request->type, $abilities)->plainTextToken
]);
}

  1. Lakukan modifikasi metode index:

public function index()
{
$user = request()->user(); //GET USER LOGIN
if ($user->tokenCan('user:index')) {
$users = User::orderBy('created_at', 'DESC')->paginate(10);
return response()->json(['status' => 'success', 'data' =>$users]);
}
return response()->json(['status' => 'failed', 'data' => 'Unauthorized']);
}
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|string',
'email' => 'required|email|unique:users',
'password' => 'required',
'role' => 'required',
]);
$user = $request->user(); //GET USER LOGIN
if ($user->tokenCan('user:create')) {
User::create($request->all());
return response()->json(['status' => 'success']);
}
return response()->json(['status' => 'faield', 'data' => 'Unauthorized']);
}

  1. Terakhir, buka routes/api.php > tambahkan route ke middleware route group:

Route::post('/users', 'UserController@store');

Melakukan Penghapusan / Revoking Token

Seperti yang sudah sempat disinggung pada poin sebelumnya, Anda bisa melakukan revoking atau menghapus token jika sudah tidak dipakai kembali. Untuk melakukan revoking token, lakukan langkah-langkah berikut:

Artikel Terkait  Bagaimana Mengelola White Space di Layout Responsif Seluler?

  1. Buka file ‘UserController.php’ > tambahkan method:

public function getAllUserToken() { $users = request()->user(); return response()->json([ ‘status’ => ‘success’, ‘data’ => $users->tokens ]); }

  1. Ubah method di atas menjad route: buka ‘routes/api.php’ > input route:

Route::get('/users/tokens', 'UserController@getAllUserToken');

  1. Untuk menghapus token, maka user akan memerlukan ID yang diterima (hanya token berdasar ID inilah yang akan dihapus, sementara semua token akan terhapus jika parameternya tidak bermuatan alias kosong).
  2. Menghapus token: buka file ‘UserController.php’ > input method:

public function revokeToken()
{
$user = request()->user(); //GET USER LOGIN
if (request()->token_id) {
$user->tokens()->where('id', request()->token_id)->delete();
return response()->json(['status' => 'success']);
}
$user->tokens()->delete();
return response()->json(['status' => 'success']);
}

  1. Terakhir, buka routes/api.php > input kode:

Route::get('/users/delete', 'UserController@revokeToken');

Selesai. Token API Anda sudah terhapus. Kalau Anda ingin melakukan uji coba, silahkan jalankan kode: namadomainAnda/api/users/delete?id_token=.

Demikianlah pembahasan artikel seri belajar Laravel pemula kali ini tentang Laravel Airlock tutorial. Bagaimana, menarik bukan pembahasan belajar framework Laravel di atas? Semoga tulisan kali ini mampu menambah wawasan dan pengetahuan Anda seputar Laravel Airlock, ya!

Terima kasih sudah membaca, dan nantikan lebih banyak artikel seri belajar Laravel dan trik pemrograman lainnya hanya dari Appkey.id. Sayonara!


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang Website, Aplikasi, Desain, Video dan API langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Kategori

Blog Post Ranking 10

Rekomendasi 10 Aplikasi Pembuat Animasi 3D Terbaik. Ayo Cek!

Apakah Anda bercita-cita untuk menjadi seorang animator profesional? Belajar membuat animasi kini sudah menjadi hal mudah yang bisa dilakukan...

Pengertian Internet & Dampak Positif dan Negatif Internet

Internet mungkin bukan sesuatu yang asing lagi, sebab semua kalangan pasti tahu apa itu internet. Hanya saja jika ditanya...

Proses Komunikasi: Encoding dan Decoding

Jika kita dapat melihat percakapan antar komputer, mungkin akan terlihat seperti ini: "010110111011101011010010110". Bahasa ini disebut dengan biner, encoding...

Cara Mudah Menambahkan Lokasi Alamat Bisnis Anda di Google Maps

Saat ingin hunting tempat makan atau tempat nongkrong terbaru, tak jarang beberapa dari Anda biasanya mendapatkan informasi terkini melalui...

Metadata Adalah? Fungsi dan Jenis-Jenis Metadata

Pernah mendengar istilah metadata? Mungkin, kita sering mendengar istilah metadata. Tetapi, banyak dari kita yang belum tahu arti dari metadata...

Jasa Pembuatan Website Untuk Toko Online

Perusahaan yang menyediakan Jasa pembuatan website untuk toko online bisa kita temukan dengan mudah di internet. Masing-masing dari perusahaan...

8 Contoh Search Engine Terbaik yang Paling Banyak Digunakan di Indonesia

Dulu jika ingin mencari informasi tentang apapun biasanya kita akan menanyakan kepada seseorang yang lebih mengetahui informasi, atau datang...

Membuat Aplikasi di Playstore dengan Mudah

Membuat aplikasi di Playstore bisa Anda lakukan dengan mudah. Terdapat beberapa situs yang bisa membantu Anda untuk membuat aplikasi...

Looping Adalah Algoritma Perulangan: Berikut Contohnya

Jika anda sudah mendalami atau sedang mendalami dunia pemrograman terdapat sebuah konsep yang dapat memudahkan anda dalam menyusun struktur...

Domain Google? Apa Bedanya Dengan Domain Biasa?

Saat memutuskan untuk membuat website menjadi salah satu bentuk media digital marketing Anda dalam bersaing di zaman digital ini,...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya