Latihan 1: Autentikasi — API

Latihan 1 dari materi Autentikasi di API — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Buat middleware requireAuth yang menjaga GET /profile. Route /profile di kode awal sudah memasang requireAuth dan menjawab { name: "Budi", role: "admin" }, biarkan.

  1. Baca header dengan req.headers.authorization, plus || "" untuk header yang gak dikirim.
  2. Pecah dengan split(" "): bagian pertama harus persis Bearer, bagian kedua token-nya.
  3. Kalau token-nya persis valid-token-123, panggil next().
  4. Kalau header-nya gak ada atau token-nya salah, jawab res.status(401).json({ error: "Unauthorized" }). Header WWW-Authenticate boleh ditambah dengan res.set("WWW-Authenticate", 'Bearer realm="tokobuku"'), tapi gak dinilai.

Tester-nya mengirim GET /profile empat kali: tanpa header Authorization (harus 401), dengan Authorization: Bearer token-salah (harus 401), dengan Authorization: valid-token-123 tanpa Bearer (harus 401), dan dengan Authorization: Bearer valid-token-123. Yang terakhir harus sampai ke handler /profile: 200 dengan {"name": "Budi", "role": "admin"}. Kodemu juga harus memanggil next(.

Hint