User Multi Level
Laravel 5.2 -
"Multiuser Login Authentication dan Router dengan Middleware"
Muqodimah
Di dalam Laravel 5.2
terdapat fitur autentikasi yang digunakan untuk login/registrasi secara default
sama seperti pada Laravel 5.1. Hanya dengan menggunakan perintah make:auth kita
sudah mendapatkan view berupa form login dan registrasi. Namun untuk kebutuhan
tertentu seperti membuat multi user kita bisa mengubah fitur autentifikasi
tersebut sesuai keinginan.
Selain itu di dalam
Laravel terdapat fitur bawaan middleware yang digunakan untuk melakukan filter
terhadap request yang masuk ke dalam sistem aplikasi. Hal ini dilakukan dengan
tujuan untuk melakukan proses verifikasi terhadap setiap request yang masuk
seperti misalnya melakukan pengecekan status login, privillage (hak akses),
atau bahkan melakukan pengecekan token CSRF (Cross-Site Request Forgery) untuk
memastikan bahwa request yang masuk berasal dari komputer atau user yang valid.
Dalam konteks Laravel,
Middleware merupakan sebuah Class khusus yang berperan sebagai “penengah”
antara request yang masuk dengan Controller yang dituju. Secara umum, prinsip
kerja Middleware adalah mencegat request yang masuk untuk kemudian diproses
terlebih dahulu sebelum diberikan kepada Controller yang dituju atau diarahkan
ke Controller yang lain. Dengan menggunakan fitur ini, kita dapat membuat
komponen yang reusable untuk melakukan pekerjaan-pekerjaan tersebut dan
melindungi router terhadap user yang tidak memiliki hak akses tertentu.
1.
Membuat form register dan login yang akan digunakan oleh 2
pengguna : Admin dan User
2.
Memanfaatkan fungsi bawaaan Laravel untuk melakukan operasi
register dan login
3.
Membuat middleware untuk melindungi router tertentu, contoh :
“/admin”
Hal yang
dibutuhkan
1.
Niat
2.
Komputer atau laptop J, yaa iyalah
3.
Laravel 5.2
4.
Web Server : MySql
5.
Texteditor
6.
Segelas kopi manis sebagai penambah gizi AJ
Langkah-langkah
1.
Pertama-tama jangan lupa berdoa dahulu kepada Allah SWT
2.
Buat database baru di Mysql dan atur koneksi laravel pada file
*.env dan config/database.php sesuai dengan
konfigurasi database yang anda buat
3.
Buat project baru di Laravel 5.2 (tentunya anda sudah bisa membuat
project baru di Laravel). Setelah project baru, ketikkan php artisan make:auth, Buka browser akses pada localhost:8000
4.
Buka file migrasi xxxx_xx_xx_xxxxxx_create_users_table pada
direktori C:\xampp\htdocs\nama_project\database\migrations untuk
membuat tabel users, kita tinggal mengambahkan field baru yaitu: $table->boolean('admin')->default(0);
5.
Kemudian lakukan migrate agar tabel tersebut masuk ke dalam
database dengan perintah migrate php
artisan migrate, maka hasil tabel yang terbuat di dalam
database.
6.
Sip, tabel sudah terbuat. Tabel tersebuat digunakan utnuk
melakukan login oleh user yang sudah tedaftar atau ter-registrasi. Ada cara
khusus yang digunakan dalam Laravel untuk menginputkan/insert data ke database
yaitu dengan Seeder. Tapi kali ini kita tidak menggunakan Seeder untuk
mengisi data ke database, karena kita juga akan membuat view
untuk Register user baru.
7. Buka file register.blade.php pada direktori C:\xampp\htdocs\nama_project\resources\views\auth, kemudian edit/tambahkan dropdown untuk memilih hak akses user baru
Note : dalam register yang dibuat
terdapat 2 hak akses yaitu 1 untuk “admin” dan 0 untuk “user biasa”.
8.
Akses dengan url http://localhost:8000/register.
dan jangan melakukan register dulu !!
9.
Buka model User.php kemudian tambahkan field
“admin” pada protected fillable. Di Laravel 5.2, file tersebut terdapat
di App\User.php
Buka file AuthController.php dan
tambahkan parameter “admin” untuk menyimpan data ke database. File tersebut
pada direktori C:\xampp\htdocs\nama_project\app\Http\Controllers\Auth.
Kemudian coba lakukan register
user baru….Minimal register 2 user dengan 1 hak akses admin dan 1 hak akses
User Biasa. Gimana? Error gak? A
10.
Oke, “perihal” registrasi sudah done…, kemudian buka localhost:8000/login dan
lakukan login.
User yang telah sukses
melakukan login akan redirect ke halaman home.
11.
Untuk membedakan home admin atau user setelah login maka kita
buat dulu view-nya dengan cara copy-paste file home.blade.php yang
ada pada C:\xampp\htdocs\nama_project\resources\views. Namai
file tersebut dengan admin_home.blade.php dan user_home.blade.php
12.
Untuk file admin_home.blade.php edit sebagai
berikut:
13.
Untuk file user_home.blade.php edit sebagai berikut
14.
Edit file app.blade.php baris 47 - 86
15.
Setelah yang kita lalui di atas, saatnya kita membuat middleware
baru sebut saja dengan nama “IsAdmin”, middleware ini berfungsi untuk
melindungi router yang hanya diakses oleh yang ber-hak akses admin
(1). Jika router/URL yang menggunakan middleware “IsAdmin” diakses
oleh user yang tidak ber-hak akses admin, maka langsung redirect ke halaman
lain atau kita bisa menambahkan peringantan keras, hehehe. Langsung saja buat
middlebaru tersebut php artisan
make:middleware IsAdmin
16.
Lakukan beberapa custome di file IsAdmin.php untuk
memeriksa apakah admin dan berikan langsung redirect ke halaman “/” atau
peringatan jika diakses oleh user yang bukan admin.
Setelah middleware jadi,
jangan lupa untuk “mendaftarkannya” di dalam file Kernel.php yang
tersimpan di dalam direktori C:\xampp\htdocs\ nama_project\app\Http
17.
Kita lakukan edit pada routers.php sebagai berikut.
Mekanisme dari
coding di atas adalah middleware à kernel à router. Setelah
membuat middleware (IsAdmin.php) kemudian mendaftarkannya di
kernel (Kernel.php) dan dipakai di router (Routers.php).
Dalam router (Routers.php) terdapat beberapa middleware dijelaskan
sebagai berikut:
a) web : middleware default
dari laravel 5.2 untuk memeriksa memeriksa Session CSRF, kernel HTTP, dll
b) auth : middleware default
dari laravel yang digunakan untuk memeriksa akses url hanya untuk user yang
sudah login (authentic).
c) admin : middleware
baru yang digunakan untuk memeriksa akses url hanya untuk user yang login
sebagai admin (1).
Setelah melakukan login akan redirect ke “/” dimana url tersebut
dilindungi oleh middleware web dan auth, kemudian
memeriksa hak akses dan mengarahkannya ke halaman masing-masing sesuai hak
akses user login. Kemudian url “admin” dilindungi oleh middleware admin, dimana
kegunaan dari middleware tersebut adalah untuk membatasi akses url “admin”
hanya boleh diakses oleh user login ber-hak akses admin (1)
18.
Ketika anda login sebagai admin
dan mengakses URL/router
“/admin”, yang terjadi adalah
19.
Saat login sebagai user, dan kemudian mencoba mengakses url
”localhost:8000/admin”, maka akan langsung redirect ke halaman “/”
20.
Alhamdulillah….begitulah cara membuat multi user authentication
dan cara mengcustome middleware untuk melindungi router. Anda bisa
menambahkan sendiri sesuai dengan kebutuhan. Semoga bermanfaat J
21.
Tulisan ini disadur dari beberapa referensi dan modifikasi, jika
ada salah dan kekurangan saya penulis mohon maaf sebesar-besarnya. Karena saya
masih belajar dan hanya manusia “tempat-nya salah dan lupa”. Hehehe….Dan jika
anda kurang paham dengan tulisan saya ini, silahkan
mengkonsultasikan/menghubungi saya lewat kontak atau komentar dibawah sini.
Matur suwun
Komentar
Posting Komentar