| Name | NRP |
|---|---|
| I Kadek Arya Deva Artana | 5025231157 |
Untuk menyelesaikan tugas kali ini saya menggunakan Go dengan beberapa library eksternal untuk mempermudah jalannya API.
- Untuk menjalankan server, pastikan port 3000 sedang tidak digunakan atau bisa mengatur pada .env dan memiliki Go.
- Download semua depedency dengan menjalankan
go mod download - Lalu setelah selesai mendownload semua depedency, jalankan server dengan (pastikan workdir berada pada project)
go run ./cmd/api/*.go - Seharusnya server sudah berjalan dengan ditandai muncul pesan pada terminal seperti ini
2024/11/19 20:01:58 server start at localhost:3000
-
User registration
Registrasi dengan role user
curl -X POST http://localhost:3000/register -i \ -H "Content-Type: application/json" \ -d '{ "username": "Donal Angsa", "password": "password123", "role": "user" }'
Registrasi dengan role admin
curl -X POST http://localhost:3000/register -i \ -H "Content-Type: application/json" \ -d '{ "username": "Donal Bebek", "password": "password123", "role": "admin" }'
-
User login
Login ke user
curl -X POST http://localhost:3000/login \ -H "Content-Type: application/json" \ -d '{ "username": "Donal Angsa", "password": "password123" }'
Login ke admin
curl -X POST http://localhost:3000/login \ -H "Content-Type: application/json" \ -d '{ "username": "Donal Bebek", "password": "password123" }'
-
Get user profile
Ketika JWT token valid
curl -X GET http://localhost:3000/profile -i \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJleGFtcGxlIiwiZXhwIjoxNzMyMTA5NzI1LCJpYXQiOjE3MzIwMjMzMjUsImlzcyI6ImV4YW1wbGUiLCJuYmYiOjE3MzIwMjMzMjUsInVzZXJuYW1lIjoiRG9uYWwgQW5nc2EifQ.O9REMk5ENmyKpsB39WSLVijbGJcy_WKJJBApdFbd_pk" \ -H "Content-Type: application/json"
Ketika JWT token invalid (token JWT saya edit dikit)
curl -X GET http://localhost:3000/profile -i \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJleGFtcGxlIiwiZXhwIjoxNzUyMTA5NzI1LCJpYXQiOjE3MzIwMjMzMjUsImlzcyI6ImV4YW1wbGUiLCJuYmYiOjE3MzIwMjMzMjUsInVzZXJuYW1lIjoiRG9uYWwgQW5nc2EifQ.O9REMk5ENmyKpsB39WSLVijbGJcy_WKJJBApdFbd_pk" \ -H "Content-Type: application/json"
-
Access protected admin endpoint
Menggunakan JWT token admin
curl -X GET http://localhost:3000/admin -i \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJleGFtcGxlIiwiZXhwIjoxNzMyMTA5NjI3LCJpYXQiOjE3MzIwMjMyMjcsImlzcyI6ImV4YW1wbGUiLCJuYmYiOjE3MzIwMjMyMjcsInVzZXJuYW1lIjoiRG9uYWwgQmViZWsifQ.6QElqiBiQPazq2WX67FKvYvQGUZo2RczSPx0Q7nb1ME" \Menggunakan JWT token user
curl -X GET http://localhost:3000/admin -i \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJleGFtcGxlIiwiZXhwIjoxNzMyMTA5NzI1LCJpYXQiOjE3MzIwMjMzMjUsImlzcyI6ImV4YW1wbGUiLCJuYmYiOjE3MzIwMjMzMjUsInVzZXJuYW1lIjoiRG9uYWwgQW5nc2EifQ.O9REMk5ENmyKpsB39WSLVijbGJcy_WKJJBApdFbd_pk" \ -
Refresh token
curl -X POST http://localhost:3000/refresh \ -H "Content-Type: application/json" \ -d '{"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJleGFtcGxlIiwiZXhwIjoxNzMyMTA2MDA2LCJpYXQiOjE3MzIwMTk2MDYsImlzcyI6ImV4YW1wbGUiLCJuYmYiOjE3MzIwMTk2MDYsInVzZXJuYW1lIjoiZXhhbXBsZXVzZXJ0ZXN0aW5nIn0.S79RIr19QDjivC-MlqM-1D22FULZ_3TdWXHqNC4EBZU"}'







