RESTful Web Services

Latar Belakang Web Services (Programmable Web) Website yang kita buat tentu kita desain agar  manusia dapat dengan mudah dan nyaman untuk mengakses informasi yang ada didalamnya. Namun,  bagaimana jika yang mengakses website kita adalah sebuah program komputer? Sudah menjadi rahasia umum, jika programmer sering menggunakan cara tidak resmi untuk mendapatkan informasi yang ada dalam sebuah website  dengan teknik screen-scraping misalnya. Namun sayang, program komputer tidak se-fleksibel manusia dalam hal menafsirkan data yang ada dalam sebuah website. Maka, muncullah teknologi seperti RSS, XML-RPC, SOAP, RESTful Web Services, dll. Teknologi-teknologi tersebut dibuat untuk membuat website kita lebih mudah dibaca atau ditafsirkan oleh program komputer. Apa Itu RESTful Web Services? RESTful Web Services mengacu pada sebuah cara atau gaya dalam membangun sebuah sistem web services dengan memanfaatkan semua fitur/potensi yang dimiliki oleh teknologi HTTP (Hypertext Transfer Prot

Memodifikasi Model User Yii2 Basic Template Untuk Kebutuhan Autentikasi Pengguna Menggunakan JWT (JSON Web Token)

Minggu lalu kita sudah mencoba Membuat Model Menggunakan Fitur Gii Console Command di Yii2, ada satu model yang tidak kita generate yaitu model user, saat menginstal Yii2 basic template model user secara otomatis dibuat. Jadi, tugasnya adalah memodifikasi model user agar sesuai dengan kebutuhan aplikasi BarBek. Berikut ini adalah model user bawaan dari basic template pada Yii2:

Langsung saja, kita akan memodifikasi model tersebut dimulai dari:
1.  Mengubah parent class dari \yii\base\Object menjadi \yii\db\ActiveRecord. Hal ini perlu kita lakukan karena kita akan menghubungkan model user ini dengan tabel user pada database barbek.
2. Karena tabel  user tidak menggunakan prefix tbl_, jadi kita harus meng-override method tableName() dari class \yii\db\ActiveRecord. Sehingga, nilai balikkan (return value) dari method tersebut adalah nama tabel (string) user.
3. Menambahkan  \yii\behaviors\TimestampBehavior pada method behaviors() untuk mencatat waktu pembuatan dan pembaruan baris tabel user.
4. Model user akan digunakan untuk proses autentikasi penjual, jadi model user secara default mengimplementasikan \yii\web\IdentityInterface. Kita harus memodifikasi method dari \yii\web\IdentityInterface diantaranya, findIdentity(), findIdentityByAccessToken() dengan menggunakan method findOne() dari \yii\db\ActiveRecord didalam kedua method tersebut. Terkhusus untuk method findIdentityByAccessToken(), kita akan menggunakan sebuah library bernama firebase/php-jwt untuk men-decode JSON Web Token (JWT) dan mengambil informasi id user dari token tersebut. Jadi, silahkan install library tersebut via composer. Sebagai informasi, kita akan menggunakan JWT untuk proses autentikasi RestFul Web APIs dari aplikasi BarBek.
5. Menambahkan method baru findByUsername() untuk mencari user berdasarkan username
6. Menambahkan method baru setPassword() untuk mengenerate password hash menggunakan method generatePasswordHash()  dari class  \yii\base\Security
7. Menambahkan method baru validatePassword() untuk memvalidasi password menggunakan method validatePassword() dari class \yii\base\Security
8. Menambahkan method baru generateJWT() untuk menggenerate JSON Web Token untuk keperluan autentikasi user.

Jadi, inilah hasil modifikasi model user:
Note: Kita akan menambahkan beberapa parameter untuk keperluan JWT di config/params.php. Untuk mencari tahu lebih dalam mengenai spesifikasi JWT silahkan pelajari disini.
Sampai disini dulu postingan minggu ini, kita lanjutkan minggu depan..


Comments



Popular posts from this blog

Membuat RESTful endpoint untuk Kontak

Google News Feed API Alternative