Beberapa saat yang lalu saya telah menulis artikel tentang membuat website statis menggunakan Node.js dengan memanfaatkan framework Express.js. Pada artikel kali ini saya akan menulis tentang bagaimana cara membuat sistem login dan register menggunakan Node.js. Baca Juga : Membuat Website Statis dengan Express.js TargetDidalam artikel ini kamu akan mempelajari pembuatan sistem login dan register menggunakan Express.js sebagai framework dari Node.js, dan memanfaatkan template engine EJS untuk disajikan di sisi client, serta database MySQL sebagai media penyimpanan datanya. MemulaiUntuk memulai praktek di artikel ini kamu diharapkan telah mengetahui dasar dari Node.js dan memahami bagaimana cara kerja dari Node.js itu sendiri. Kamu bisa membaca artikel sebelumnya dan melakukan instalasi terhadap beberapa software yang diperlukan. #1 Membuat DatabaseKali ini kita akan menggunakan database dengan nama db_node_login. Didalam database tersebut terdapat satu tabel dengan nama table_user, dan berikut rincian fields yang ada pada tabel tersebut: Hanya ada 4 fields, dan pada field password saya menggunakan tipe data text agar dapat lebih banyak menyimpan string karna nantinya kita akan menggunakan SHA512 untuk melakukan enkripsi. #2 Buat ProjectTentukan dimana sistem ini akan kamu buat, sebagai contoh saya meletakan pada direktori D:\Learn. Kemudian buat sebuah folder dengan nama nodejs-basic-login. Lalu buka terminal dan ketik perintah 8. Jawab semua pertanyaan yang diajukan melalui terminal, mulai dari name, version, author, hingga lisensi dan ketika selesai kamu akan mendapatkan file package.json.Masih di terminal yang sama, ketikan perintah untuk menginstall dependensi yang kita perlukan untuk membangun sistem login dan register ini.
Pada perintah diatas kita menginstall 6 dependensi sekaligus yaitu express sebagai kerangka kerja Node.js, express-session yang dibutuhkan untuk sesi user ketika login, body-parser untuk menghendle input yang dilakukan user, req-flash yang digunakan untuk memberi notifikasi error ataupun sukses, mysql sebagai koneksi sistem ke database, dan terakhir ejs sebagai template engine untuk disajikan ke browser user. #3 SkeletonNode.js membebaskan kamu untuk menentukan seperti apa kerangka aplikasi yang diinginkan. Untuk keperluan artikel, agar lebih gampang biasanya penulis menggunakan satu file bernama app.js atau index.js saja. Namun pada artikel ini, saya juga akan memberikan skeleton atau kerangka aplikasi Node.js yang baik dan tersusun agar mudah dimaintenance kedepannya. Berikut adalah struktur dari sistem login dan register yang akan kita bangun menggunakan Node.js: #4 NgodingPertama-tama mari kita mulai menulis kode dari file terpenting dahulu. Pada direktori root, tepat sejajar dengan folder node_modules, buat sebuah file bernama index.js. File ini akan menjadi file inti atau file induk sekaligus juga merupakan file yang berfungsi untuk menjalankan sistem ini nantinya.
Setiap potongan kode telah saya sertakan komen yang bertujuan untuk menjelaskan fungsi dari potongan kode tersebut. Pada bagian konfigurasi session kamu dapat melihat angka 60000. Itu merupakan angka dalam satuan milidetik yang apabila di konversi ke satuan menit menjadi 1 menit. Artinya, didalam sistem ini kita menetapkan sesi untuk seorang user login hanya diberi waktu selama 1 menit saja. Kamu bisa mengganti sesuai dengan waktu yang diinginkan. Selanjutnya buat sebuah file yang digunakan untuk konfigurasi koneksi ke database dengan nama database.js. Letakan file tersebut kedalam folder src/configs sesuai dengan skeleton diatas.
Kemudian didalam folder yang sama, buat juga file verify.js. File ini berfungsi sebagai middleware yang akan memproteksi pemanggilan controller dari router sebelum dijalankan.
Untuk middleware ini kamu bisa menggunakan library yang telah banyak disediakan pada NPM seperti passport.js yang paling banyak digunakan. Pada kode verify.js diatas saya meletakan 2 fungsi sederhana yang akan melakukan pengecekan apakah user tersebut masih memiliki sesi atau tidak. Lanjut ke tahap pembuatan rute. Metode ini biasa disebut routing atau perutean terhadap sebuah sistem. Dimana kita akan membuat jalur-jalur apa saja yang tersedia untuk sistem ini ketika dijalankan. Pada sistem kali ini saya akan membagi rute menjadi 3 bagian, yaitu rute register, login, dan app. Silahkan buat sebuah file bernama router-register.js dan letakan pada folder src/routes. Kemudian ketik kode berikut
Pada kode diatas telah saya sertakan komen untuk menjelaskan maksud dari potongan kode tersebut. Pada bagian Rute kamu dapat melihat bahwa rute tersebut dilindungi oleh middleware yang memastikan hanya user yang belum login / yang tidak memiliki sesi yang dapat mengakses rute tersebut. Masih pada folder yang sama, buat file router-login.js dan berikut kode didalamnya
Masih pada folder yang sama, buat file router-app.js yang akan kita gunakan untuk mengakses halaman home dan profile
Pada 3 router diatas kamu dapat perhatikan bahwa setiap router akan memanggil controller berikut dengan fungsi didalamnya. Tentu saja jika kita jalankan akan terjadi error karena belum terdapat file controller sama sekali. Sekarang silahkan buat file controller dengan nama index.js didalam folder src/controllers.
Dilihat dari kode diatas, saya membagi controller menjadi 4 bagian dan saya tampung kedalam 4 variabel yang dieksport. ...masih pada folder yang sama, buat file bernama controller-register.js dan ketik kode berikut
Didalamnya telah saya sertakan penjelasn untuk masing-masing potongan kode. Penjelasan tersebut juga berlaku untuk kode yang sama pada controller selanjutnya. Lalu buat file controller untuk login dengan nama controller-login.js di dalam folder yang sama.
Selanjutnya buat file controller-home.js masih pada folder yang sama 0Hanya terdapat satu fungsi didalamnya yang digunakan untuk me-render tampilan home.ejs sekaligus membawa data berupa userName yang nanti akan ditampilkan pada browser. ...masih pada folder yang sama, buat file controller-profile.js yang digunakan untuk melihat profile dari user yang login 1Sekarang kita lanjut kebagian desain halaman untuk ditampilkan ke pada user melalui browser. DIsini seperti yang saya jelaskan diawal, kita akan menggunakan template engine EJS, namun kamu tidak perlu khawatir karena kode yang ada didalamnya hampir sama dengan kode HTML. Kamu juga bisa menambahkan css sesuka hati. Untuk artikel ini saya menggunakan bootstrap sebagai framework CSS yang dipanggil melalui CDN. Langsung saja, pada folder src/views, buat file bernama register.ejs dan ketik kode berikut 2Pada folder yang sama, buat juga file login.ejs 3Perhatikan, diatas terdapat kode logic pesanFlash. Ini digunakan untuk menampilkan respon berupa alert kepada user. Pesan ini telah kita set sebelumnya pada controller. Selanjutnya buat file home.ejs masih difolder yang sama 4Kode 9. digunakan untuk menampilkan varibel yang kita ikut sertakan ketika EJS di render dari controller....lalu buat juga file profile.ejs pada folder yang sama, untuk menampilkan profile dari user yang login 5#5 JalankanBuka kembali terminal tempat kamu menginstal dependensi pada langkah #2 Buat Project diatas. Kemudian ketik perintah berikut untuk menjalankan 6Sekarang buka browser dan arahkan ke url http://localhost:5050/. Secara otomatis kamu akan diarahkan ke halaman login karena tidak memiliki sesi dan rute tersebut dilindungi oleh middleware. Berikut video demo dari sistem login dan register yang telah kita buat diatas. TambahanKetika kamu telah logout dari sistem, kemudian menekan tombol back pada browser, browser tetap akan menarahkanmu ke halaman sebelumnya tanpa harus login. Sebenarnya ini disebabkan oleh browser yang menyimpan cache dari setiap halaman yang dikunjunginya. Tapi kamu tidak perlu khawatir karena halaman yang ditampilkan tersebut bukan lah real time melainkan hanya halaman yang telah di cache saja. Sehingga ketika kamu reload atau melakukan aksi apapun, tetap saja akan diarahkan kembali kehalaman login karena rute tersebut dilindungi oleh middleware. Untuk mengatasi hal tersebut, silahkan tambahkan baris berikut didalam index.js. 7PenutupPada artike kali ini kamu telah mempelajari bagaimana membuat basic dari login dan register menggunakan Express.js menggunakan sesion. Untuk kamu yang menginginkan source code lengkap dari artikel ini, dapat kamu temukan dan download melalui akun Github saya. |