Aplikasi yang saya buat memiliki 5 macam tipe user. Untuk membantu mengelola SRBAC saya menggunakan extension rights. Saya melakukan instalasi dan membuat beberapa roles.
Pertanyaanya : bagaimana cara membuat beberapa macam menu yang berbeda untuk tipe user yang berbeda? sepertinya kuncinya berada pada apakah ada fungsi yang harus dipanggil untuk mengetahui yang sedang login ini rolesnya apa…
kalo kasus saya ada 5 macam role,cuma ada user yang memiliki 1 role+beberapa aksi tambahan/task (perlu diingat bahwa rights sangat dinamis tidak hanya role saja yang bisa diberikan kepada user,tetapi dapat diberikan role/task/operation)
rights akan memeriksa apakah si user tersebut berhak melakukan aksi Users.Admin
kalo ya simpen kearray seperti diatas,kemudian munculkan deh si array
lebih enak lagi kalo controller kita aksinya namanya sama semua, sehingga bisa lebih dinamis
contoh:
kita punya 3 Controller: Users,Customer,Barang
$pret=array('Users,'Customer','Barang');
foreach($pret as $prot)
{
if(Yii::app()->user->checkAccess($prot.'.Admin') //munculkan menu
if(Yii::app()->user->checkAccess($prot.'.Index') //munculkan menu
if(Yii::app()->user->checkAccess($prot.'.Create') //munculkan menu
}
Maaf lambat jawabnya. Kemarin-kemarin masih sibuk ngerjakan tugas UAS. Sebagai rasa penyesalan (dan terima kasih), dalam waktu dekat saya menyumbang tutorial buat install dan utak-atik menu pakai rights
Kembali ke masalah utama. Setelah diperhatikan dan dipikir berlama-lama ternyata saya cuma perlu dua roles untuk menu utama aplikasi saya, dua roles tersebut adalah tu-admin, dan selain-itu (roles lainnya digunakan pada sub-menu).
Oh ya kalo itu kan Menunya di tulis di Kode, tapi bagai mana kalo menunya itu bisa Flexibel tanpa harus mengubah Kode, Apa perlu kita buat tabel menu untuk menampung semua link, dan sekaligus hak akses dari setiap user…
Gan, sudah fix masalahnya? Biasanya masalah ini disebabkan controller agan bukan inheritance dari RController. Cara paling gampang buka /protected/components/Controller.php ganti code nya menjadi: