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.
Baca header dengan req.headers.authorization, plus || "" untuk header yang gak dikirim.
Pecah dengan split(" "): bagian pertama harus persis Bearer, bagian kedua token-nya.
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
Pemeriksaan token jalan sebelum handler, jadi bentuknya middleware: dia memanggil next() kalau boleh lewat, atau menjawab sendiri kalau gak.
Header-nya ada di req.headers.authorization, bentuknya "Bearer <token>". Pecah dengan split(" "), lalu bandingkan bagian kedua dengan "valid-token-123". Yang gak lolos dijawab 401.