AUTHOIRIZATION
Tutorial
ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen
Authentication’.
Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘Lumen
Authentication’.
Menambahkan Column Role Pada Table users
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
dibawah 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. Dan 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. dan 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 dibawah ini.
2. Buka
file app/Http/Controllers/PostsController.php, tambahkan Gate class dan ubah
function index
3. Anda coba login dengan user
yang role = ‘user’, maka respon nya seperti dibawah ini.
4. Anda coba login dengan user yang role = ‘admin’ atau ‘editor’, maka respon
nya seperti dibawah 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. Dan 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 dibawah
ini.
2. Buka file app/Http/Controllers/PostsController.php
3. Anda coba login dengan user yang role = ‘user’, maka respon nya seperti
dibawah ini.
4. Kalau anda login dengan user yang valid authorization nya, maka tampilanya
seperti dibawah ini.
5. Selesai
Membuat Logika Policy Pada Create, Read detail dan Delete Post
User yang bisa melakukannya adalah ‘editor’ dan ‘admin’. Dan keduanya bisa
melakukan di semua data post. Untuk membuat logika policy pada create, mari
ikuti langkah-langkah dibawah ini:
Buka file app/Providers/AuthServiceProvider.php, codenya seperti dibawah
ini.
Buka file app/Http/Controllers/PostsController.php, tambahkan di function
create, show dan destroy
Coba
anda login dengan user yang valid authorization nya yaitu 'admin' atau
'editor', maka tampilanya seperti dibawah ini.
kita coba Create maka hasilnya seperti berikut
kita coba Read Detail
kita coba Delete
Coba login dengan user yang role = ‘reader’, dan test di setiap
function yang sudah di buat.
maka respon nya seperti dibawah ini.
coba Create
kemudian Read Detail
lalu Delete
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.
Pertama buat dulu routes nya di Routes/web.php
Buat file controller baru dengan nama
app/Http/Controllers/PublicController/PostsController.php
kemudian tambahkan code dibawah ini
Buka file app/Models/Post.php, tambahkan code dibawah ini sebelum penutup
Class:
Buka file app/Models/User.php, tambahkan code dibawah ini sebelum penutup
Class:
Buka url http://localhost:8000/public/2post di postman:
selesai




















Komentar
Posting Komentar