Kompas-13513085-Muhammad Farhan Kemal
+ 131
− 114
5. [DELIVERABLE] Buat tugas sesuai spesifikasi dan silakan commit pada repository anda (hasil fork). Lakukan berberapa commit dengan pesan yang bermakna, contoh: `add register form`, `fix logout bug`, jangan seperti `final`, `benerin dikit`. Disarankan untuk tidak melakukan commit dengan perubahan yang besar karena akan mempengaruhi penilaian (contoh: hanya melakukan satu commit kemudian dikumpulkan). Sebaiknya commit dilakukan setiap ada penambahan fitur. **Commit dari setiap anggota tim akan mempengaruhi penilaian individu.** Jadi, setiap anggota tim harus melakukan sejumlah commit yang berpengaruh terhadap proses pembuatan aplikasi.
Merubah sedikit fungsionalitas order yang sudah ada dan menambah fungsionalitas chat pada aplikasi yang telah dibuat pada tugas 2. Aplikasi akan menggunakan MEAN stack untuk halaman chat dan REST service, serta menggunakan layanan cloud Firebase Cloud Messaging sebagai media penyampaian pesan. Selain itu, mengimplementasikan beberapa fitur security pada aplikasi. Spesifikasi untuk tugas ini adalah sebagai berikut:
2. Bila status pengguna merupakan driver maka pada halaman order akan ditampilkan fitur finding order dimana akan membuat driver visible ketika user ingin melakukan order pada halaman select driver. Apabila driver tidak melakukan finding order, maka driver tidak akan ditampilkan pada halaman select driver ketika pengguna non driver melakukan order.
1. Pada tugas ini, diasumsikan kedua client sedang aktif. Aplikasi hanya akan dijalankan pada localhost, sehingga memerlukan 2 browser yang berbeda untuk mensimulasikan client yang berbeda. Aplikasi berjalan pada localhost karena browser mensyaratkan sumber aplikasi harus aman untuk operasi-operasi yang digunakan pada aplikasi ini. Localhost termasuk lokasi yang diperbolehkan oleh browser.
Token harus mempunyai informasi terkait browser (user agent) dan IP address dari pengguna. Identity service harus dapat mengekstrak informasi tersebut. Sebagai contoh, dapat melakukan (tidak harus) konstruksi token dengan `format:some_random_string#user_agent#ip_address`. Jika pada tugas 2 token adalah `abcdefgh`, maka pada tugas 3 token anda adalah `abcdefgh#Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36#167.205.22.104`.
* `Database`: Kami memisahkan basis data pada tugas 1 menjadi basis data khusus manajemen *account* (menyimpan username, password, dkk) dan basis data ojek online tanpa manajemen *account*. Basis data *account* digunakan secara khusus oleh Identity Service. **Ojek Online Web Service tidak boleh secara langsung mengakses basis data account untuk melakukan validasi token** (harus melalui Identity Service). Pada basis data account memuat tabel account (id, name, username, email, password, phone_number, driver, image) dan tabel token (id, access_token, expiry_time). Basis data ojek online memuat tabel transaction (id, id_user, id_driver, rating, comment, date, picking_point, destination), tabel drivers (id, name, total_rating, total_passangers), dan tabel driver_location (id, location).
* `Konsep shared session dengan menggunakan REST`: Setiap user akan melakukan aktivitas atau membuka page baru token akan dikirim ke REST untuk mengkonfirmasi apakah token tersebut valid dan milik user yang mana. Lalu, REST akan memberikan response berupa json, yang menunjukan apakah user tersebut berhak atau tidak untuk mengakses aplikasi. Jika token invalid atau expired, maka user akan diredirect ke halaman lain yang menunjukan bahwa user harus login lagi.
* `Pembangkitan token dan expire time pada sistem yang anda buat` : Pembangkitan token dilakukan ketika user melakukan register atau login. Ketika register atau login maka user akan diberikan token baru dan expire time +30 menit dari sejak dia register atau login, lalu akan disimpan pada tabel token pada database di IdentityService.
* `Kelebihan dan kekurangan dari arsitektur aplikasi ini` : Kelebihan dari arsitektur ini adalah lebih modular sehingga satu layanan bisa digunakan oleh beberapa client, misal identity service bisa digunakan oleh aplikasi lain. Sedangkan kekurangannya karena aplikasi ini terbagi-bagi databasenya, maka untuk melakukan operasi yang mungkin harusnya mudah, menjadi lebih rumit karena harus mendapatkan data dari berbagai service yang berbeda. Lalu untuk pengintegrasiannya juga lebih sulit dibandingkan aplikasi monolitik biasa.
\ No newline at end of file