Pada artikel sebelumnya sudah dibahas bagaimana Membuat Custom accessRules menggunakan extends CWebUser. Dimana dalam pengerjaannya begitu kompleks mulai dari membuat UserLevel, WebUser, hingga menentukan class apa yang harus digunakan.
Kali ini saya akan mencoba membuat custom accessrules sederhana dengan menggunakan function(). Sekenario yang digunakan sama seperti sebelumnya yaitu user level terdiri dari Administrator, Keyuser, dan Enduser.
- Enduser hanya diperbolehkan melakukan action create
- Keyuser hanya diperbolehkan melakukan action create dan update
- Administrator bisa melakukan semuanya termasuk create, update, delete, hingga mengakses halaman admin.
Pastikan Anda sudah mempunyai user model database (klik disini). Kemudian create user dengan level yang berbeda-beda
Pastikan konfigurasi protected/components/UserIdentity.php sudah benar+----------+---------------+
| username | level |
+----------+---------------+
| user1 | enduser |
| keyuser1 | keyuser |
| admin1 | administrator |
+----------+---------------+
.............Langkah selanjutnya adalah melakukan sedikit perubahan dengan menambahkan function() pada controller model yang akan digunakan.
if (isset($user)){
if($pass === $user->password){
$this->_id=$user->id;
$this->setState('_level', $user->level);
.............
//protected/controllers/MahasiswaController.php
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index','view'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('create'),
'expression'=>function() {
return Yii::app()->user->_level=='enduser';
}
),
array('allow',
'actions'=>array('create','update'),
'expression'=>function(){
return Yii::app()->user->_level=='keyuser';
}
),
array('allow',
'actions'=>array('admin','create','update','delete'),
'expression'=>function(){
return Yii::app()->user->_level=='administrator';
}
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
Good Luck!
Belum ada tanggapan untuk "Yii: Custom AccessRules Menggunakan Expression Function()"
Posting Komentar