Sabtu, 26 Desember 2020

PHP Lumen Resource Relationship


Mohon maaf jika gambar rusak anda bisa unduh file pdf disini RESOURCE RELATIONSHIP.pdf

Pada Bab ini kita akan menambahkan fitur relationship antara model (tabel).
Tujuan praktek ini adalah untuk:

1.      Memahami konsep relationship

2.      Mampu implementasi fitur relationship

A.    Implementasi Comment

Sekarang kita akan mengimplementasikan fitur comment, yaitu user bisa memberikan komentar pada salah satu post. Untuk mengimplementasikan fitur ini dibutuhkan 2 endpoint yaitu.

1.      Endpoint untuk create comment

2.      Endpoint untuk get comment based on post. List komentar nya harus mengandung object user

Untuk membuat fungsi comment, Mari ikuti Langkah Langkah dibawah ini

1.      Pertama kita buat tabel comments terlebih dahulu dengan migrasi ke database buka cmd ketikan
php artisan make:migration create_comments_table

2.      Edit filenya di Database/migration dan tambahkan kode berikut:

  

3.      lanjut ketika di cmd : php artisan migrate

 

 

 

4.      Kemudian kita buat sebuah controller di App\Http\Controllers\CommentsController.php, dan masukan kode berikut:

           

5.      Selanjutnya kita buat model Comment di App\Models\Comment.php, dan masukan kode barikut :

           

6.      Selanjutnya buka model Post.php dan tambahkan kode berikut :

 

 

7.      Selanjutnya tambahkan di App\Http\Controllers\PostsController.php, dan tambahkan kode berikut:

8.      Sehingga respon dari get post nya adalah terdiri dari beberapa comment yang memiliki object user di dalamnya. Namun sebelum melakukan get all post.

9.      Selanjutnya tambah kode berikut di routes\web.php

10.  Lakukan testing di postman dengan endpoint http://localhost:8000/public/posts
maka hasilnya seperti berikut

PHP Lumen Authorization

mohon maaf bila gambar rusak anda bisa unduh file pdf disini AUTHORIZATION.pdf 

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:

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

Sabtu, 12 Desember 2020

PHP Lumen Autentication

Mohon maaf bila gambar rusak anda bisa unduh file pdf disini AUTHENTICATION.pdf

Pada Bab ini kita akan menambahkan fungsi autentikasi. Tujuan praktek ini adalah untuk:
1. Mampu implementasi autentikasi menggunakan Lumen
2. Mampu membuat fungsi login
3. Mampu membuat fungsi register

A.    Membuat Tabel User

Untuk membuat table ​users ​ , mari kita ikuti langkah-langkah berikut ini:

1.      Membuat database migration dengan menjalankan command dibawah ini pada terminal: php artisan make:migration create_users_table

2.      Buka file database/migrations/...create_users_table.php, an ubah menjadi seperti dibawah ini

3.      Jalankan command dibawah ini pada terminal:
php artisan migrate 

4.      Kemudian insert satu row ke table users

5.      Selesai

 

 

 

 

 

B.     Membuat Model User

Untuk membuat model user, ikuti langkah-langkah dibawah ini:

1.      file baru dengan nama app/Models/User.php, codenya seperti dibawah ini.

           

Endpoint
Saat ini kita sudah mengimplementasikan endpoint yang akan kita gunakan, yakni seperti ini:

C.    Membuat Fungsi Register

Implementasi fungsi ini adalah fungsi index di PostsController.php:

1.      Buka file routes/web.php, tambahkan code dibawah ini

           

2.      Buat file baru app/Http/Controllers/AuthController.php, code nya seperti dibawah ini.

           

3.      Mari kita test dengan menggunakan Postman. Negative case.

           

4.      Mari kita test dengan menggunakan Postman. Positive case.

           

D.    Instalasi dan Konfigurasi JWT untuk Lumen

Ketika kita login, maka kita akan mengembalikan Token login yang bisa digunakan sebagai penanda sesi Login. Untuk membuat Token ini, kita akan menggunakan plugin JWT untuk Lumen. Mari kita ikuti langkah-langkah dibawah ini:

1.      Jalankan command di di command prompt (harus connect internet).
composer require tymon/jwt-auth:dev-develop

           

2.      Jika berhasil, di file composer.json, akan menjadi seperti ini.

3.      Buka file bootstrap/app.php, ubah menjadi seperti dibawah ini.
Cari block ‘Register Service Providers’.

             

4.      Jalankan command di di command prompt.
php artisan jwt:secret 

5.      Buka file .env Kalau berhasil akan ada line seperti dibawah ini: 

            

 

A.    Membuat fungsi Login 

Untuk membuat fungsi login, mari ikuti langkah-langkah dibawah ini.Buka file

1.      bootstrap/app.php, ubah menjadi seperti dibawah ini. Cari block ‘Register Middleware

2.      Buka file app/Models/user.php, ubah menjadi seperti dibawah ini

3.      Buat file config/auth.php, dengan code seperti dibawah ini

4.      Buka file routes/web.php, cari group ‘auth’, ubah menjadi seperti dibawah ini.

           

5.      Buka file app/Http/Controllers/AuthController.php, tambahkan code ini diatas deklarasi Class.

    

6.      Buka file app/Http/Controllers/AuthController.php, tambahkan function login code nya seperti dibawah ini.     

7.      Test menggunakan Postman

8.      Kalau email dan password nya salah, seperti ini:

B.     Membuat Authenticated Routing 

Sekarang kita akan membuat routing di bawah ini tidak bisa diakses oleh user yang belum login.

 

Untuk implementasi nya mari ikuti langkah-langkah dibawah ini. 

1.      Buka file routes/web.php, ubah posts routing menjadi seperti dibawah ini. 

            

2.      Sekarang kalau kita akses melalui Postman, maka response nya seperti ini. 

           

3.      Mari kita tambahkan header Authorization dengan value [Bearer LOGIN _ TOKEN ] Authorization ini akan digunakan sebagai sesi Login

                

 

 

 

C.    Indentifikasi User Login Authenticated Routing 

Dari Token login yang dikirim, kita bisa melakukan identifikasi user. Sebagai contoh, kita hanya akan mengembalikan list posts berdasarkan posts.user_id = UserLogin.id. Mari ikuti langkah-langkah dibawah ini. 

1.      Buka file app/Http/Controllers/PostsController.php, dan ubah menjadi seperti dibawah ini

2.      Testing menggunakan Postman.


Cloud Computing

  Tujuan Mempelajari Cloud Computing Setelah membaca sedikit terkait pengenalan dasar Cloud Computing. Saya berharap dengan mengikuti mata k...