Latihan 1 dari materi Authentication vs Authorization di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function di kode awal. Data users di bawahnya sudah ada (role admin, editor, viewer). Di latihan ini password-nya masih disimpan apa adanya supaya kamu fokus ke dua pertanyaan tadi; lesson Password Hashing menggantinya dengan hash.
authenticate(users, email, password): cari user yang email dan password-nya cocok. Kembalikan object user itu, atau null kalau gak ada yang cocok.
authorize(user, action): kembalikan true kalau role user punya izin action, selain itu false. Izin tiap role:
admin: ["read", "create", "update", "delete"]
editor: ["read", "create", "update"]
viewer: ["read"]
- Kalau
user bernilai null (belum login), authorize mengembalikan false.
Baris-baris console.log di kode awal sudah ada, biarkan begitu. Output-nya harus persis enam baris ini, berurutan:
true (admin berhasil login)
true (admin boleh delete)
true (admin boleh read)
false (editor gak boleh delete)
true (editor boleh update)
true (password salah menghasilkan null)
Dicek juga: authorize({ role: "viewer" }, "delete") hasilnya false, authorize({ role: "editor" }, "update") hasilnya true, dan authorize(null, "read") hasilnya false.