Sabtu, 14 Desember 2019

TUTORIAL PHP Lumen Authorization

hayyy teman-teman... kali ini saya akan bikin tutorial tentang 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

Jika sebelumnya belum membuat table users, ana 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 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


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


2. Buka file app/Http/Controllers/PostsController.php, tambahkan        Gate class dan ubah function index.


 3. login dengan user yang role = ‘user’, maka respon nya seperti         dibawah ini.


4. login dengan user yang role = "admin atu editor".


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


2. Buka file app/Http/Controllers/PostsController.php, ubah                  function update.


3. coba login dengan user yang role = ‘user’, maka respon nya              seperti dibawah ini.


4. login dengan user yang valid authorization nya.


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.

1. Buka file app/Providers/AuthServiceProvider.php, codenya              seperti dibawah ini.


2. Buka file app/Http/Controllers/PostsController.php, tambahkan        di function create, show dan destroy.




login dengan user yang valid authorization nya yaitu 'admin' atau 'editor', maka tampilanya seperti dibawah ini.

hasil create 


hasil read detail


hasil delete


 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.

1.bikin terlebih dahulu routes nya di Routes/web.php.


2.bikin app/Http/Controllers/PublicController/PostsController.php
   kemud ian tambahkan code dibawah ini.
                    

3. Buka file app/Models/Post.php, tambahkan code dibawah ini.


4. Buka file app/Models/User.php, tambahkan code dibawah ini.


5. test dengan menggunakan postman,hasilnya seperti dibawah.


selesai...

Orang yang selalu Aku kenang

Namanya warnania Nazara,  Asal dari Nias utara, Sumatra Utara, orangnya baik, perhatian dan juga pekerja keras, aku merasa bahagia saat dia ...