BATCH 3
DISUSUN OLEH
ASRAF
2001092024
DOSEN PEMBIMBING
2022
Pengembangan Aplikasi Kasir Berbasis Web dengan Menggunakan Bahasa Go dan
Basis Data NoSQL
Ketika program pertama kali dijalankan, tampilan pada Gambar 3.1 akan muncul yang
meminta pengguna untuk melakukan aksi registrasi atau masuk jika telah memiliki akun.
Tampilan ini pertama kali keluar karena di atur ketika route dari URL menuju / (root), maka
akan menampilkan template (view) dari file HTML yang bernama index.html.
III.2.1 Proses Registrasi Pengguna
Setelah pengguna memasukkan username dan password untuk registrasi, maka tombol
Submit pada Gambar 3.2 akan ditekan. Tombol ini akan membawa pengguna ke rute /user/reg
ster yang hanya menerima HTTP Request jenis POST. Terdapat method pada API yang
bernama Reg ster yang akan di hit ketika tombol Submit tersebut ditekan.
Pada API tersebut, dilakukan parsing dari form HTML pada register.html untuk
mendapatkan username dan password yang dimasukkan oleh pengguna baru. Kemudian
method Reg ster ini akan memanggil method AddUser yang akan memeriksa apakah username
sudah ada di dalam basis data dalam kasus ini adalah basis data NoSQL jenis JSON.
Setelah pengguna berhasil melakukan registrasi, maka pada basis data NoSQLyang bertipe
JSON akan ditambahkan seperti gambar berikut:
Gambar 3. 3 Tampilan Repositori Pengguna
Dapat dilihat pada gambar tersebut terdapat sebuah array dari JSON yang memiliki
keys password dan username. Ketika pengguna melakukan registrasi, maka pada array JSON
tersebut akan ditambahkan data baru (append) dengan username dan password yang
dimasukkan oleh pengguna tersebut.
III.2.2 Proses Masuk Pengguna
Jika middleware mengizinkan maka akan lanjut ke method Log n. Pada method ini
kembali dilakukan parsing form untuk mendapatkan masukkan dari pengguna. Berbeda dengan
proses registrasi, proses masuk akan memeriksa dalam basis data jika pengguna dengan
username tertentu sudah ada. Kemudian dilakukan pencocokan dengan password berdasarkan
username tersebut.
Jika username dan password tersebut cocok, maka akan dibuat cookie pada browser
untuk session-based authentication yang akan kadaluwarsa setelah 5 jam. Cookie ini
menyatakan bahwa pengguna telah masuk dan sesi pengguna ini hanya dapat digunakan
sebelum 5 jam setelah masuk (atau sebelum keluar secara langsung oleh pengguna) dan akan
muncul view dari dashboard.
Adapun tampilan dari repositori session setelah pengguna berhasil melakukan login adalah
sebagai berikut:
Gambar 3. 5 Tampilan Repositori Session
Dapat dilihat pada gambar tersebut terdapat sebuah array dari JSON yang memiliki
keys token, username, dan exp ry. Ketika pengguna melakukan login, maka sesi dari login
tersebut akan disimpan dalam repositori dengan token unik yang dihasilkan secara otomatis.
Key username menyimpan nama pengguna yang melakukan login sementara key exp
ry mengatur lama waktunya sesi berakhir. Pada contoh ini sesi akan berakhir 5 jam setelah
login. Sebenarnya browser juga menyimpan data tersebut dalam bentuk cookie, jika dalam
waktu 5 jam setelah login pengguna ingin menggunakan aplikasi kembali, maka akan
dilakukan cek waktu berakhir pada repositori berdasarkan token sehingga pengguna tidak perlu
memasukkan username dan password kembali.
Ketika pengguna sudah berhasil masuk dan username serta cookie berhasil disimpan
dalam browser, maka pengguna selanjutnya akan dibawa ke tampilan dashboard. Pada tampilan
dashboard, akan dikeluarkan produk-produk yang tersedia berdasarkan data yang ada pada
basis data.
Gambar 3. 6 Daftar Produk Yang Tersedia
Produk-produk tersebut dapat ditampilkan dengan memanggil repository produk. Pada
repository tersebut, terdapat method Readflroducts yang akan mengeluarkan semua detail
produk dari basis data. Bersamaan dengan tampilan dashboard.html, data dari produk-produk
ini diteruskan (execute) dengan menggunakan template sehingga detail produk tersebut akan
muncul di tampilan dashboard.
Proses penambahan produk ke keranjang sampai penekanan tombol Add to Cart pada
dasarnya merupakan proses form dengan metode POST yang hasilnya perlu dilakukan parsing.
Ketika tombol tersebut ditekan, maka akan memanggil API AddCart yang melakukan parsing
form produk dan menambahkannya ke keranjang serta menghitung jumlah harganya.
Pada gambar tersebut dapat dilihat setelah menambahkan produk ke keranjang belanja,
maka produk-produk tersebut akan muncul dalam keranjang belanja pengguna beserta total
harga tiap produk dalam satu ID dan total keseluruhan harga produk dalam keranjang.
Tampilan daftar keranjang belanja tersebut didapatkan dari penggunaan repository carts.
Ketika pengguna pertama kali masuk, maka akan diperiksa keranjang belanjanya
berdasarkan username pada basis data keranjang belanja. Ketika tidak ada keranjang belanja
dengan username pengguna, maka keranjang belanja tidak akan dikeluarkan. Ketika terdapat
kerajang belanja dengan username pengguna tersebut, maka nama- nama produk yang ada
dalam keranjang belanja pengguna akan dikeluarkan.
Pada repositori keranjang belanja juga disimpan data kerajang belanja dari pengguna sekarang
seperti pada gambar berikut:
Pada gambar tersebut dapat dilihat terdapat array dari JSON yang memiliki key name
bertipe data string, cart bertipe data array berisi produk-produk yang ditambahkan ke
keranjang. Key ini memiliki key di dalamnya, yaitu d, name, price, quant ty, dan total. Key
terakhir di repositori keranjang belanja adalah total_pr ce. Pada repositori tersebut ditunjukkan
implementasi dari array JSON dua dimensi.