Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.
Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen
Authentication’. Pada tutorial ini kita akan menambahkan fungsi autentikasi. Tujuan praktek ini
adalah untuk:
1. Mampu implementasi otorisasi menggunakan Lumen
2. Mampu membuat fungsi pengecekan otorisasi
3. Memahami logika untuk otorisasi
Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Authentication’.
Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen
Authentication’. Pada tutorial ini kita akan menambahkan fungsi autentikasi. Tujuan praktek ini
adalah untuk:
1. Mampu implementasi otorisasi menggunakan Lumen
2. Mampu membuat fungsi pengecekan otorisasi
3. Memahami logika untuk otorisasi
Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Authentication’.
Menambahkan Column Role Pada Table users
Jika sebelumnya belum membuat table users, anda harus membuat dulu table users. Lihat
tutorial PHP Lumen Authentication.
Untuk menambahkan column role pada table users, mari kita ikuti langkah-langkah berikut ini:
1. Membuat database migration dengan menjalankan command dibawah ini pada terminal:
php artisan make:migration add_role_to_users_table --table=users
2. Buka file database/migrations/..._add_role_to_users_table.php, dan ubah menjadi
seperti ini
3. Jalankan command dibawah ini pada terminal:
php artisan migrate
4. Secara default column role yang sudah terdaftar di database menjadi role=reader.
5. Kita akan memerlukan 3 users dengan role yang berbeda, silahkan bikin user dengan
role:
- admin
- editor
- reader
6. Selesai
Kebutuhan User Role
Setiap role dari user, memiliki kemampuan yang berbeda-beda, yakni:
1. Admin
- Bisa read all posts
- Bisa read detail post
- Bisa create posts
- Bisa update post
- Bisa delete post
2. Editor
- Bisa read all posts (yang dibuat oleh user yang lagi login)
- Bisa read detail post (yang dibuat oleh user yang lagi login)
- Bisa create posts
- Bisa update post (yang dibuat oleh user yang lagi login)
- Bisa delete post (yang dibuat oleh user yang lagi login)
3. Reader
- Bisa read all posts
- Bisa read detail post
- Bisa memberikan comment pada post tertentu
4. Selesai
Membuat Logika Policy Pada Read All Post
Logika police ini berguna untuk menentukan role apa bisa mengakses data apa. Untuk
implementasi kebutuhan user role diatas, kita akan menggunakan fitur policies dari Lumen.
Untuk membuat logika policy pada read all, mari ikuti langkah-langkah dibawah ini:
1. Buka file app/Providers/AuthServiceProvider.php, codenya seperti ini. Lihat line
5 - 6 dan line 33 - 36.
2. Buka file app/Http/Controllers/PostsController.php, tambahkan Gate class dan ubah
function index. Lihat line 7 - 8 dan line 18- 42.
3. Anda coba login dengan user yang role = ‘reader’, maka respon nya seperti ini.
4. Anda coba login dengan user yang role = ‘admin’ atau ‘editor’, maka respon nya seperti
ini.
5. Kalau login pakai ‘admin’, maka list post nya adalah semua posts, kalau login pakai
‘editor’ pakai list post nya hanya post yang user_id = user logged in id.
6. Selesai
Membuat Logika Policy Pada Update Post
User yang bisa melakukan update adalah ‘editor’ dan ‘admin’. Untuk ‘editor’ hanya bisa
meng-update post yang dia create, untuk ‘admin’ bisa meng-update semua post. Untuk
membuat logika policy pada create, mari ikuti langkah-langkah dibawah ini:
1. Buka file app/Providers/AuthServiceProvider.php, codenya seperti ini. Lihat line
38- 46.
2. Buka file app/Http/Controllers/PostsController.php, ubah function update. Lihat line 88-
109.
3. Anda coba login dengan user yang role = ‘user’, maka respon nya seperti ini.
4. Kalau anda login dengan user yang valid authorization nya, maka tampilanya seperti
ini.
5. Selesai
Endpoint Untuk Public User
Untuk public user bisa melakukan Read All dan Read Detail. Untuk mengakomodir kebutuhan
ini kita akan membuat routes dan controller baru.
0 komentar:
Posting Komentar