Nanya donk, kan ketika login umumnya ada role admin, authenticate ama guest. Nah yang mau saya tanya adalah bagaimana caranya supaya saya mau assign suatu user sebagai admin. Soalnya selama ini saya harus membuat user dengan username ‘admin’ baru bisa, tidak bisa dengan menggunakan username lain. Padahal harusnya tidak begitu bukan? Terima kasih sebelumnya
Terakhir saya sudah menemukan caranya… Karena saya lebih prefer cara yang Access control list via fungsi accessRules() daripada RBAC (karena kurang mengerti apa kelebihan RBAC selain bisa hirarki). Saya mendapat referensi dari link ini :
Secara default Yii menggunakan ACL dengan membandingkan username CWebUser orang yang login. Oleh karenanya jika kita memiliki 2 orang admin maka kita harus menulis seperti ini :
array('allow', // allow harold and maude user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete'),
'users'=>array('harold','maude'),
),
Nah masalahnya adalah, terkadang user kita bersifat fleksibel, di mana masing-masing memiliki role khusus. Otomatis membandingkan username bukanlah solusinya. Makanya solusi dari blog itu, kita meminta Yii untuk membandingkan roles dengan cara
Di sini expression untuk menjalankan script php dan haruslah mengembalikan nilai boolean. Tetapi bagaimana mungkin kita bisa memakai $user->role padahal CWebUser hanya memiliki Username dan Password?? Nah ketika kita melakukan authenticate() pada file components/UserIdentity.php kita harus setState()
$this->setState('role',$users->type);
NB:$users saya itu merupakan User::model() yang memiliki attribute "type".
Wah, ini yang sy cari. Tetapi bagaimana kalo type usernya banyak misalnya Editor, Administrator, Member, dll?. Bagaimana cara ngeceknya pada controller? .
Sekarang sih saya dah pakai, cuma saya pakai Srbac, soalnya dah dibikinin deh rbac-nya. Jadi saya cukup tinggal klak klik doank. Soalnya setau saya, rbac ternyata harus dimasukkin satu per satu gitu… maksudnya kita musti masukkin nama action controller(sebagai Operation) satu per satu, masukkin user (sebagai Role) satu per satu, terus hubung2in satu per satu…bisa bego duluan sebelum semuanya selesai dimasukkin.