нужен контроль доступа для разных ролей. сделал корявенько по видяшке на основании этого http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
но есть такой подход http://habrahabr.ru/post/177873/
или такой http://habrahabr.ru/post/127052/
вот по второй ссылке вроде интреснее (ну типа создание роли - контейенра ролей).
а вот у меня сейчас по факту проходит такая проверка
if (Yii::app()->user->checkAccess('admin'))
{
$this->menu = array(
array('label' => 'List Engine', 'url' => array('index')),
array('label' => 'Create Engine', 'url' => array('create')),
array('label' => 'Update Engine', 'url' => array('update', 'id' => $model->e_id)),
array('label' => 'Delete Engine', 'url' => '#', 'linkOptions' => array('submit' => array('delete', 'id' => $model->e_id), 'confirm' => 'Вы уверены что хотите удалить мотор?')),
array('label' => 'Manage Engine', 'url' => array('admin')),
);
}
else if (Yii::app()->user->checkAccess('director'))
{
$this->menu = array(
array('label' => 'List Engine', 'url' => array('index')),
array('label' => 'Manage Engine', 'url' => array('admin')),
);
}
ну оно вроде и правильно - че хорошего человека по 403 адресу слать то?
и вот checkAccess вроде отрабатывает - значит роли нормально установились?
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions' => array('index', 'view'),
'roles' => array('@'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('index', 'view', 'admin'),
'roles' => array('director'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('create', 'index', 'view', 'update'),
'roles' => array('master'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('create'),
'roles' => array('electric'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions' => array('create', 'admin', 'delete', 'update'),
// 'users' => array('admin'),
'roles' => array('admin'),
),
array('deny', // deny all users
'roles' => array('*'),
),
);
}
и вот даже если я снимаю у электрика апдейт - то он все равно может делать его. почему? где может быть ошибка?