Membuat authentikasi JWT di golang yang selalu dipikirkan. Setelah sekian lama kita belajar golang yang aplikasi aplikasi sederhana akhirnya kita ingin membuat sebuah aplikasi utuh tapi kepentok sama pertanyaan, gimana cara authentikasi di golang? Kemudian kamu mencari cari artikel yang sekiranya pas.
Itu juga pertanyaan saya dulu waktu mutusin pindah dari node-js ke golang.
Persiapan awal
Pertama pastikan dulu laptop atau pc temen temen sudah di install golang, dan postgresql didalamnya kalau sudah baru kita lanjut lagi ke langkah selanjutnya.
Pengenalan struktur folder
Pada tutorial kali ini kita akan menggunakan struktur folder yang biasa saya pakai
Sekarang jalankan command go mod init shellrean.com/auth pada folder yang telah dibuat.
Membuat tabel di postgresql
Langkah selanjutnya adalah setup database. Untuk DBMS kita kali ini menggunakan PostgreSQL silakan temen temen buat tabel dengan nama users dengan spesifikasi sebagai berikut:
- id (int) auto increment
- name (string)
- email (string)
- password (string)
- created_at (timestamp)
- updated_at (timestamp)
Kemudian buat 1 user dummy. Buat bebas untuk password generate dari bcrypt gunakan online tool nya di Bcrypt-Generator
Membuat file domain
Selanjutnya buat file user.go lalu simpan pada folder domain, kita akan membuat struct domain dan interface untuk user pada file ini.
[gist id=”f29496d80cc8baee57cc83664663af49″]
Buat file token.go lalu simpan pada folder yang sama yaitu domain, kita akan membuat struct domain untuk token pada file ini.
[gist id=”7f18dcc0bfd68cf40098a43d5b8af5ad”]
Membuat file repository
Langkah selanjutnya yaitu buat file main_user.go lalu simpan pada folder services/user/repository/postgres, kita akan membuat fungsi repository untuk pengambilan data dari database.
[gist id=”7617424d4ef0763d45772fc254da574b”]
Pada file ini kita membuat 1 method yang bernama get by email yang mengambil parameter email, ini akan mencari user dari database berdasarkan email.
Membuat file helper
Selanjutnya buat file token.go lalu simpan pada folder entities/helper. Kita akan membuat fungsi helper yang akan melakukan operasi pada JWT.
[gist id=”47b2a9e39fbdfe0322b2802f69ebd82a”]
Pada file ini kita mendeklarasikan 7 fungsi untuk operasi dan berkomunikasi dengan token. Kita akan membuat waktu expires token, yaitu access token selama 15 menit dan refresh token selama 7 hari.
Kesimpulan
Sampai sini dulu, kita sudah buat 2 file domain 1 file repository dan 1 file helper, kita lanjut lagi di artikel selanjutnya biar ngga kepanjangan.