Latihan 1 dari materi RBAC vs ABAC: Implementasi di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi checkAccess(role, resource, action, attributes) di kode awal. Function ini menggabungkan RBAC dan ABAC, lalu mengembalikan true (boleh) atau false (ditolak). Periksa dengan urutan ini:
-
Blokir menang atas segalanya: kalau attributes.isBlocked === true, kembalikan false.
-
Aturan atribut: kalau resource adalah "confidential-file", cuma user dengan attributes.department === "hr" yang boleh lanjut. Selain itu false, setinggi apa pun role-nya.
-
Tabel role, aksi yang boleh untuk tiap role:
admin: "read", "write", "delete"
editor: "read", "write"
viewer: "read"
Role yang gak ada di tabel ditolak (deny by default).
Baris-baris console.log di kode awal sudah ada, biarkan begitu. Output-nya harus persis enam baris ini, berurutan:
true (admin membaca file)
false (viewer menghapus file)
false (admin dari engineering membaca confidential-file)
true (editor dari hr membaca confidential-file)
false (admin yang diblokir)
false (editor dari hr menghapus confidential-file)
Dicek juga: checkAccess("editor", "file", "write", {}) hasilnya true, admin dengan { isBlocked: true } hasilnya false, dan admin dari sales yang membaca confidential-file hasilnya false.