Minggu, 29 Desember 2019

MEMBUAT PHP LUMEN DOCUMENTATION

Untuk membuat docs generatornya kita akan menggunakan swagger.
Ikuti langkah-langkah dibawah ini:

1. Install swagger-php plugins. Pada terminal/CommandPrompt ketika command dibawah ini. composer require zircote/swagger-php
2. Membuat artisan command file. Buat file app/Console/Commands/SwaggerDocScanner.php

3. Buka file app/Console/Kernel.php, tambahkan code dibawah ini. Line 16-17.

4. Untuk tampilan User Interface nya kita perlu mebuat file html di public folder. Buat file public/api-docs.html, code nya seperti dibawah ini.

5. Run Lumen Server
6. buka localhost:8000/api-docs.html

Membuat Dokumentasi API (Get Request)
Kita akan membuat API dokumentasi untuk endpoint /register. Untuk membuat dokumentasi API mengenai get Request, silahkan ikuti langkah-langkah dibawah ini: 
1. Buka file app/Http/Controllers/Controller.php, tambahkan code dibawah ini. Line 7-21.
2. Buka file app/Http/Controllers/Public/PostsController.php, tambahkan code dibawah ini. Line 11-25

3. buka command prompt lalu ketik php artisan swaggerdoc:scan
4. Pada browser buka http://localhost:8000/api-docs.html

Membuat Dokumentasi API (Post Request)
1. Kita akan membuat API dokumentasi untuk endpoint /register. Untuk membuat dokumentasi API mengenai Post Request, silahkan ikuti langkah-langkah dibawah ini: 1. Buka file app/Http/Controllers/AuthController.php, tambahkan code dibawah ini. Line 11-44.


class AuthController extends Controller
{
    /**
     * @OA\Post(path="/auth/register",
     *  summary="Register new user",
     *  tags={"Authentication"},
     *  @OA\RequestBody(
     *    @OA\MediaType(
     *      mediaType="application/json",
     *         @OA\Schema(
     *          @OA\Property(
     *            property="name",
     *            type="string"
     *          ),
     *          @OA\Property(
     *            property="email",
     *            type="string"
     *          ),
     *          @OA\Property(
     *            property="password",
     *            type="string"
     *          ),
     *          @OA\Property(
     *            property="password_confirmation",
     *            type="string"
     *          ),
     *          example={"name": "User Name", "email": "user@email.com", "password": "123456", 
     * "password_confirmation": "123456"}
     *          )
     *      )
     *     ),
     *      @OA\Response(
     *          response=200,
     *          description="OK"
     *    )
     * )
     */ 
    
2. Buka CMD ketik : php artisan swaggerdoc:scan
3. Pada browser buka http://localhost:8000/api-docs.html

Jumat, 27 Desember 2019

PHP LUMEN CLIENT APP

1. Buka cmd, ketik:
    composer global require "laravel/lumen-instaler"
2. lalu ketik : lumen new [NAMA_PROJECT]. contoh : lumen new LumenClientApp
3. setelah selesai, hubungkan server lewat cmd. karna ini client, maka buat menggunakan localhost:9000
4. berhasil!
Membuat Fungsi Untuk Mengakses Web Service JSON (Get Request)
1. Buka file routes/web.php, tambahkan code dibawah ini, line 18
2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function getRequestJson dengan code nya seperti dibawah ini.
3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan dalam bentuk html (lihat line 35). Secara default folder view ada di resourcers/views. Sekarang buat file view dengan nama resources/views/posts/getRequestJson.php. Untuk styling nya kita akan menggunakan bootstrap (https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya seperti dibawah ini.
4. Buka halaman http://localhost:9000/posts/get-request-json di browser, tampilanya seperti dibawah ini:



Membuat Fungsi Untuk Mengakses Web Service Xml (Get Request)
1. Buka file routes/web.php, tambahkan code dibawah ini, line 19
2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function getRequestXml dengan code nya seperti dibawah ini.
3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan dalam bentuk html (lihat line 35). Secara default folder view ada di resourcers/views. Sekarang buat file view dengan nama resources/views/posts/getRequestXml.php. Untuk styling nya kita akan menggunakan bootstrap (https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya seperti dibawah ini.






Membuat Fungsi Untuk Mengakses Web Service JSON (Post Request)
1. Buka file routes/web.php, tambahkan code dibawah ini, line 20
2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function postRequestJson dengan code nya seperti dibawah ini.
3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan dalam bentuk html (lihat line 35). Secara default folder view ada di resourcers/views. Sekarang buat file view dengan nama resources/views/posts/postRequestJson.php. Untuk styling nya kita akan menggunakan bootstrap (https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya seperti dibawah ini.

4. Selesai

Minggu, 22 Desember 2019

Membuat PHP Lumen Upload Media

Pada tutorial ini kita akan membahas mengenai upload media. 
Tujuan praktek ini adalah untuk:
1. Mampu implementasi upload media menggunakan Lumen
2. Mampu implementasi untuk menampilkan media 

Pada tutorial ini kita akan menambahkan fitur user profile. User profile ini digunakan untuk menyimpan data profil user. User dan Profile mempunyai hubungan One-to-one Relationship. Oleh karena itu kita harus membikin tabel baru dengan nama profiles.
Dibawah ini adalah kolom-kolom yang harus ada di table profiles :
1. id → increment id
2. user_id → foreign key untuk menghubungkan dengan tabel users
3. first_name → nama depan
4. last_name → nama belakang
5. summary → ringkasan profile
6. image → image profile

Membuat Table profiles
Untuk membuat table profiles, mari kita ikuti langkah-langkah berikut ini:
1. Membuat database migration dengan menjalankan command dibawah ini pada terminal: 
-->  php artisan make:migration create_profiles_table
2. Buka file database/migrations/...create_profiles_table.php, dan ubah menjadi seperti dibawah ini 


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

Membuat Model Profile 
Untuk membuat model user, ikuti langkah-langkah dibawah ini:
1. Buat file baru dengan nama app/Models/Profile.php, codenya seperti dibawah ini. 


Endpoint 
Untuk fitur user profile kita akan menambahkan beberapa endpoint, yakni seperti ini: 


Membuat Fungsi Create dan Update Profile 
Untuk membuat fungsi create dan update profile, mari kita ikuti langkah-langkah dibawah ini. 
1. Buka file routes/web.php, tambahkan code dibawah ini pada group middleware auth.

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

3. Test fungsi create or update profiles menggunakan postman. 


Membuat Fungsi Get Profile 
Untuk membuat fungsi get profile, mari kita ikuti langkah-langkah dibawah ini. 
1. Buka file routes/web.php, tambahkan code dibawah ini, simpan di paling bawah 
 2. Buat file baru app/Http/Controllers/ProfilesController.php, tambahkan function show, code nya seperti dibawah ini. 

3. Test fungsi get profiles menggunakan postman. 


Membuat Fungsi Get Image Profile 
Untuk membuat fungsi get image profile, mari kita ikuti langkah-langkah dibawah ini. 
1. Buka file routes/web.php, tambahkan code dibawah ini.

2. Buat file baru app/Http/Controllers/ProfilesController.php, tambahkan fungsi image, code nya seperti dibawah ini 

3. Test fungsi get image profiles menggunakan postman. Kalau image nya tidak ada seperti ini. 

4. Test fungsi get image profiles menggunakan postman. Kalau image nya ada seperti ini

Jumat, 13 Desember 2019

PHP RELATIONSHIP


Tutorial ini adalah lanjutan dari tutorial sebelumnya dan syaratnya harus sudah menyelesaikan tutorial Membuat PHP Lumen Authorization. Pada tutorial ini kita akan menambahkan fungsi autentikasi. Tujuan praktek ini adalah untuk : 
1.  Memahami konsep relationship
2. Mampu implementasi fitur relationship

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.


Menambahkan Fungsi Public Read

Untuk menambahkan fungsi public read all, mari kita ikuti langkah-langkah berikut ini:
1. Buka file routes/web.php, tambahkan code dibawah ini:

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

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



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



5. Buka url http://localhost:8000/public/posts di postman:

6. Buka url http://localhost:8000/public/post/2 di postman:
7. Selesai

Jumat, 06 Desember 2019

MEMBUAT PHP LUMEN AUTHORIZATION

Tutorial ini melanjutkan project dari tutorial sebelumnya. 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

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

Kebutuhan User RoleSetiap 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

Membuat Logika Policy Pada Read All PostLogika 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 ini. Lihat line 5 - 6 dan line 33 - 36.

2. Buka file app/Http/Controllers/PostsController.php, tambahkan Gate class dan ubah
function index. Lihat line 7 - 8 dan line 18- 42.

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

4. Anda coba login dengan user yang role = ‘admin’ atau ‘editor’, maka respon nya seperti
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.

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 ini. Lihat line
38- 46.

2. Buka file app/Http/Controllers/PostsController.php, ubah function update. Lihat line 88-109.

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

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

Endpoint Untuk Public UserUntuk public user bisa melakukan Read All dan Read Detail. Untuk mengakomodir kebutuhan ini kita akan membuat routes dan controller baru.