нужен контроль доступа для разных ролей. сделал корявенько по видяшке на основании этого 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('*'),
            ),
        );
    }
и вот даже если я снимаю у электрика апдейт - то он все равно может делать его. почему? где может быть ошибка?