Langsung ke konten utama

LUMEN AUTHOIRIZATION

 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

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHlQGu8Af8RI6A2WUTUHF90qEMm_jTrLX1Bq2TBrtcovZsK5OKU2YJfFvx1hyloNs4WNE7_o5uw3dHmJHjrxdc1gMerAGruiox0WX4o7FItOkRrPXQ9q2kPBA3w4lAfs05uZSb-FrZnVw/s400/Screenshot_4.jpg



3. Jalankan command dibawah ini pada terminal:
    php artisan migrate
4. Secara default column role yang sudah terdaftar di database menjadi role=reader.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvDOmn5_6D5-vxM0FrhdmOJJcMQf0pG0VRUFXrPFzAaEpmk1VDyL_bIVBqRlUNXu7cEG37GzJ2jL22p45rXZR8glY42rT3X6EhysQNYfiJ2CbX_ZG8-fKrAnSwre6wFo6QX3gv10_H7kQ/s400/Screenshot_5.jpg

 

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. 

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXCtst7KfYZxzcqdz0V1UBGQGIHi4QN9X0sIelcQuKymbIiuTE_EAFDUPkfT6uvLvV_FMvobx2xjlqixR3avzJ51pJInKAlX0mK82f-fhARArKxj6xLIeSeiawKJc8SCAlvTL5NLbb8B8/s400/Screenshot_8.jpg

 

 

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

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVTYn-lBVtZ1onLxf9laTNJuMbIkpGQuMBEY6Dl06w5diXs-vGaNRYcoxbXXoFzw9x66lzU2Z0WaTYe1d16HJUDK_2R71ZBCHT-qSxQEGNI1j6T4MfJ9BV5c3hXUXf4wvDWQuD_cinJt8/s400/Screenshot_9.jpg

 

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

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq3_r56gnA1cX1bOOaUcEewjfq1WU1rZkkcYDYxk-2XIe05amWkECjeUIjyRxUBeRE2tM-QMk_ZbphZdD3MVkH0OZNFPZKFP9ORspnTaPiZbuYqPwYTf5wbXmluTIF6r9tnO8ALXj_hf8/s400/Screenshot_10.jpg


4. Anda coba login dengan user yang role = ‘admin’ atau ‘editor’, maka respon nya seperti dibawah     ini.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpM5j9_Q6j2dztMQGvFFZEmMj4wbtjG3sS8rEpq90cmkJJ_Y-JUtVt1itQmfztZa0C5Mf0qjTgxv-NSE6w_ARw2KFLyBGr_tWQsS7z1JzycWKiD3j9DwExJvhBD8v3qkNhlb9fb9Puyg0/s400/Screenshot_11.jpg

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEsAqVklCARoLJfANZSfyv3ifhc0HDVa_coawr1NVeVT0lkco-B55Cjwd3hHY9eqAh5HNcg5EBkEIg9qFzYRDPKo4CJpu6dUimEJ6pTOjv20iOC8B3CwjP1NpXld_kR_SpWniWcZtCM_w/s400/Screenshot_12.jpg

 

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.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRR1KUPa2EFQnr5Vnn1Zmi47eQHhU5CnV3ivj5lqktzf76netCWXW1dG3n0A7RzCdzivm8OfAL6cjDSiSwLnqOiNrBXC5_HZibh23_h1Mlz5LG9FDQjfaBJnpsuDYdlbko3G7Y3t3dQg/s400/Screenshot_13.jpg


2. Buka file app/Http/Controllers/PostsController.php


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

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUOFG45ZLhyphenhyphenVevRfJSFgKEyBPCz45vb8wkRB1FIKUqZunYSXlPtSrux7EsKGwX1GTp3bWdgm18-Mk6ac2stoFN3OaED73Qr454n3PkfvjFRcgVZjJHzeEF1-hpoxkkXqIWBee555GADko/s400/Screenshot_14.jpg


4. Kalau anda login dengan user yang valid authorization nya, maka tampilanya seperti dibawah ini.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiocilfhSTMqEt0PYhRVLCw4jj-KwVz_YhDLkp9C0h6s4iwBpy7hiXijU-H8c9ZC5_C0fsar5o4w29KhSnMiwQZgLl36n37SHaaSL86cXclQqcN28mAz627wfe8Y01rlzHiMSJhnORFUSk/s400/Screenshot_15.jpg


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.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha8RhlGOb7W_spkx994ldGCV2YE7wjkr6F_6QLFo5cZ0jGaj059GuXxy2eQ3VIn8eSk-VP4aZXAesOcbUriV_nCeJBp6_45o7IwzEfCnaOPs_wl0kP4XscrCdZNQ1zG_6Zn85qEmOG0O8/s400/Screenshot_24.jpg


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

 

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytAhfXcgihWh5p-a_KVeNMtIRcar31ZZZ575qIknw4ZHTzop8TwcR3XPa3Km6XjdtNroQgIfWMxzryTsz12JpT_5uNeB0ylbS_ylG8P-YsGBPtzyXhfbrRPVTIbVWmK7TXSObeBR7dDA/s400/Screenshot_26.jpg

 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4-hqcVCXCSWXZiqDEx0TzxTPv_xkmzChrDRVQP-mM5pH4nJN43MN4TC0V_8rWnEjoxzKnZtHWl_X3NgqAzj0S7L2Pdhw_C2UZc5Yk6vKTRfs_2EVQGz85dmImZ5LCFghQYs4pu1D5Lw/s400/Screenshot_27.jpg

 

 

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 

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3a2sjMwdVrBz0lnA9QIq0Jml0XQ6JRVTbFIF81LMRKm-1p1WQUkBITCBacpAMvy1ip-i8KsMtBnKzZCAzXNaciIXMJ6pPdupIDVmJDI9tZ3QROSsea6GJsxfc13Wto8e63QFygWq0rk0/s400/Screenshot_18.jpg


Coba login dengan user yang role = ‘reader’, dan test di setiap function yang sudah di buat.

maka respon nya seperti dibawah ini.

coba Create

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC8n89i9qKnay5yVCDogBj1U04UgsJgvBww5eIJAQ5aAqbPn-s5WCdfFHyjzOGNuHhZp-Bp2w9Q1Kof5EqL-rLbaGgOxFNJE7ilHN-Sk4f9qTM2BAPwQ8_CbyAsTvxo0Bx3fT2173DnZQ/s400/Screenshot_19.jpg




kemudian Read Detail

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8S2DLZDqqQXT03xvzlVBhuyPfQwNMGXrvd8-EFe2cwh2Lu78yPVR8vQDlrCnJnNVZ9NDKPBfPR3uEa-1fMfopiFSbN4FOHtQgaT7Een32ibFNkEVN_Vzf2q2Asd0hyXQAh4aVDjcWM3o/s400/Screenshot_20.jpg

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

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhssIZgLW4loPPW067HbdNhMwfEwH4IyqS6Dsu-0YSCXC0npNj2rC5TBJ7QYNFNVw0vf8ICWTSBkcJ7rO8ORENQudJZjcUFz56JXNnuobvVl1s-6_BbFTDTpUTWhnDZ8DXvb3jKZ6UvJf4/s400/lan1.jpg


Buat file controller baru  dengan nama app/Http/Controllers/PublicController/PostsController.php
kemudian tambahkan code dibawah ini

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5uLTaylfTRjW10gKX2lE0rGzaPunhuEV9UC-ZPutOzrJ7wlJWKkASq0Njv0VaNDIBUGfLS-5ekb5egjhfgwK01uls7DJjGcnr50toLuBmNO2uAQfO5HUjM9_ZrrybmPz7-DVEGyO3aX4/s400/lan2.jpg


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:

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGxKGYnBnOH1I5FP3ToEsYOxob7pCacvgLLNbLc0QQ-4GjNNRaq3n8tz6JiLBtpsi3jgcfwO3AEcRPQUV-QRHJS3im8j35vmtleW5as4LSsqElk2kEYf6kMfnc_g-trk0Kv9fv5emwWFQ/s400/lan4.jpg


Buka url ​http://localhost:8000/public/2post​ di postman:

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM0LvhI8KHqjElFQ9TF6NWZqnELuAev4uIYkwbOgFXNy5G0G4BLYXNeKK9OMmELKK1Atx2ERaAgH_NpXO6qKTOcsmv0P2uCTSWaIoPddPTxcNLbWfHrvbbkG7avByYAYJOjwdJ3io0jqs/s400/Screenshot_3.jpg


selesai

 

Komentar

Postingan populer dari blog ini

Membuat Lumen Uplod Media

Membuat Lumen Uplod Media Pada tutorial ini kita akan membahas mengenai upload media dan upload video kedalam tabel posts. Fitur upload Image di Post Untuk mengimplementasikan fitur upload image kita harus menambahkan satu field ke tabel posts. Caranya ketik di command Prompt /CMD : php artisan make:migration add_image_to_posts_table Selanjutnya buka filenya di Database/Migration/.. , dan tambahkan kode berikut: Selanjutnya ketik di command Prompt /CMD : php artisan migrate Dengan begitu sudah bertamah satu kolom/field di table posts. Selanjutnya buka file App/Http/Controllers/PostsController.php dan tambahkan kode berikut di function store : Silakan test di postman store dan isi form datany, dan jika berhasil maka responnya seperti ini. Fitur get image Post Pertama tambahkan kode di routes/web.php Selanjutnya tambahkan method baru "image" di App/Http/Controllers/PostsController.php. Kemudian lakukan test di postman get dengan parameter image name sesuai dengan nama image yan...

MEMBUAT PHP LUMEN API DOKUMENTATION

Membuat PHP Lumen Api Documentation  Mempersiapkan Docs Generator Untuk membuat docs generator kita akan menggunakan swagger-ui (  https://swagger.io/tools/swagger-ui/  ). Untuk membuatnya, silahkan ikuti langkah-langkah dibawah ini: Install swagger-php plugins di projek lumen-service kalian. Pada terminal/CommandPrompt ketik command dibawah ini. composer require zircote/swagger-php Jika sudah selesai selanjutnya buat artisan command file. Buat file di app/Console/Commands/SwaggerDocScanner.php. Lalu masukan kode di bawah ini. Buka file app/Console/Kernel.php, tambahkan code dibawah ini. Untuk menjalankan artisan command SwaggerDocScanner dan menggenerate docs, pada terminal/CommandPrompt jalankan command dibawah. Command ini akan membuat file public/swaggerdoc.json. Saat ini kalau dijalankan, command ini bakal error, karena kita belum mendefiniskan anotasi docs nya. php artisan swaggerdoc:scan Untuk tampilan User Interface nya kita perlu mebuat file html di public folder...

Apa itu interopabilitas

Interoperabilitas Adalah : Karakteristik, Kelebihan dan Kekurangannya Interoperabilitas adalah dimana suatu aplikasi bisa berinteraksi dengan aplikasi lainnya melalui suatu protokol yang disetujui bersama lewat bermacam-macam jalur komunikasi, biasanya lewat network TCP/IP dan protokol HTTP dengan memanfaatkan file XML. Aplikasi dapat ditempatkan pada platform yang berbeda: Delphi Win32, NET, Java atau bahkan pada sistem operasi yang berbeda. Kata “interoperabilitas” terdiri dari 3 kata, yaitu: “inter” yg artinya antar (beberapa hal), “operate” yg artinya bekerja, dan “ability” yg artinya kemampuan/kebisaan. Ketika digabungkan menjadi “interoperabilitas”, ini secara kasar berarti “kemampuan untuk bekerja di antara banyak hal” atau terjemahan gratis tentang “kemampuan untuk bekerja bersama di antara banyak hal”. Interoperabilitas merupakan kemampuan berbagai ragam sistem untuk bekerja sama dan kemampuan sebuah sistem untuk bekerja atau digunakan oleh sistem lain (Merriam Webster). Inter...