Kartika
PHP Lumen Authorization

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
Untuk menambahkan column role pada table users, mari kita
ikuti langkah-langkah berikut ini:
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


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.



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



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


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
kemudian tambahkan code dibawah ini


Buka file app/Models/User.php, tambahkan code dibawah ini sebelum penutup Class:

selesai


Komentar
Posting Komentar