Итак, столкнулся с проблемой, что не могу настроить роли.
Деле всё как на http://yiiframework.ru/doc/guide/ru/topics.auth
Что делаю. Создаю роли и назначаю им привелегии:
Код: Выделить всё
$auth=Yii::app()->authManager;
$auth->createOperation('viewDevices','просмотр устройств');
$auth->createOperation('createDevices','создание устройств');
$auth->createOperation('updateDevices','редактирование устройств');
$auth->createOperation('deleteDevices','удаление устройств');
$bizRule='return Yii::app()->user->isGuest;';
$role=$auth->createRole('guest','Гость',$bizRule);
$bizRule='return !Yii::app()->user->isGuest;';
$role=$auth->createRole('user','Пользователь',$bizRule);
$role->addChild('guest');
$role->addChild('viewDevices');
$bizRule='return User::model()->findByAttributes(array(\'user_id\' => Yii::app()->user->getId()),\'user_rank=1\')!=null';
$role=$auth->createRole('admin','Администратор',$bizRule);
$role->addChild('user');
$role->addChild('createDevices');
$role->addChild('updateDevices');
$role->addChild('deleteDevices');
Как роль по умолчанию в настройках стоит guest.
затем на странице делаю такой код:
Код: Выделить всё
if(Yii::app()->user->checkAccess('admin'))
{
echo "Это админ!";
}
if(Yii::app()->user->checkAccess('user'))
{
echo "Это юзер!";
}
if(Yii::app()->user->checkAccess('guest'))
{
echo "Это гость!";
}
так же для админа отдельно его правило возвращает не null, а обьект, если зайти под админом (правило говорит что у пользователя, с текущем id, поле user_rank должно быть равно 1)
Или же обязательно каждого существующего пользователя нужно добавлять роль через $auth->assign('user',1);, где 1- это id пользователя.