Pengalaman saya saat bereksperimen dengan implementasi RBAC kustom adalah sebagai berikut:
-
Anda membaca banyak literatur RBAC dan berpikir Anda memahaminya. Kemudian Anda melanjutkan dan mencoba menerapkannya, hanya untuk menyadari bahwa Anda tidak benar-benar memahaminya sama sekali. Akhirnya akan masuk akal saat Anda melanjutkan proyek.
-
Berdasarkan pertanyaan Anda, Anda sudah mengetahui domain bisnis yang ingin Anda terapkan RBAC. Tapi lupakan objek bisnis yang sebenarnya untuk saat ini. Implementasi RBAC Anda harus generik, artinya Anda memiliki skema DB yang terdiri dari tabel Peran, Pengguna, Izin, Operasi, dll. Kemudian Anda akan memiliki objek yang dipetakan ke tabel tersebut (relasi satu-ke-satu).
Setelah Anda memiliki implementasi RBAC ini, maka dapat dimodelkan ke hampir semua domain bisnis, seperti 'Departemen' yang telah Anda sebutkan.
Ingatlah bahwa itu tidak semuanya sempurna... Saya telah menyempurnakan/memodifikasi/berasal dari literatur RBAC yang sebenarnya untuk menambahkan fitur khusus, meningkatkan kinerja, dll.
Saya belum mengerjakan ini untuk sementara waktu, jadi saya harap saya benar dalam hal berikut:
- Pengguna:Instance dibuat dan disimpan ke tabel pendukungnya.
-
Peran:Instance dibuat dan disimpan ke tabel pendukungnya. Peran akan diberikan kepada pengguna.
-
Izin:Izin pada dasarnya adalah kombinasi dari Operasi pada Objek. Izin ditetapkan ke peran.
-
Operasi:Operasi adalah apa pun yang Anda inginkan. Ini bisa berupa CRUD (buat, baca, perbarui, hapus) atau bisa juga 'cetak', 'pencarian', atau apa pun yang dapat dilakukan manusia (atau sistem) pada suatu objek (atau sekelompok objek).
- Objek:Ini pada dasarnya adalah semua objek Anda yang membentuk domain bisnis Anda.
Untuk kekuatan yang lebih besar, Anda dapat menerapkan batasan untuk menerapkan sejumlah besar berbagai batasan.
Dengan kerangka kerja ini, Anda seharusnya dapat memetakan:
- Siapa yang dapat menetapkan pengguna ke departemen
- Siapa yang dapat menghapusnya dari departemen
- Berapa banyak pengguna dalam satu departemen
- Pengguna seperti apa (berdasarkan peran yang ditugaskan kepada mereka) dalam suatu departemen
- Gulungan mana yang dapat melakukan operasi mana ke departemen (membuat, membaca, memperbarui, menghapusnya)
- Dll.