RBAC и описание ролей в файле

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Аватара пользователя
Black Bars
Сообщения: 47
Зарегистрирован: 2013.10.23, 18:55

Re: RBAC и описание ролей в файле

Сообщение Black Bars »

Без bizRule все работает как надо, Продавец может менять ВСЕ товары, однако же как только пытаюсь проверить принадлежность товаров через bizRule - сразу перестает пускать в редактирование любых товаров

Код: Выделить всё

'Поставщик услуг' => array(
        'type' => CAuthItem::TYPE_ROLE,
        'description' => 'Поставщик услуг / Продаван',
        'children' => array(
            'guest', // унаследуемся от гостя
            'GoodsUpdate',
        ),
        'bizRule' => null,
        'data' => null
    ),    

'GoodsUpdate'=>array(
        'type'=>CAuthItem::TYPE_ROLE,
        'description'=>'Редактирование записи',
    'bizRule' => Yii::app()->user->id == Users::model()->findByAttributes(array('u_login'=>$params["post"]->g_author)),
),
 
Вызываю так

Код: Выделить всё

$model=$this->loadModel($id);
$params = array('post'=>$model);

if(Yii::app()->user->checkAccess('GoodsUpdate',$post))
{
    ...
}
else
    throw new CHttpException(403,'У Вас нет доступа к редактированию объявлений другого пользователя');
 
При этом следующий код выдает "Совпадение"

Код: Выделить всё

if(Yii::app()->user->id == Users::model()->findByAttributes(array('u_login'=>$params["goods"]['g_author']))->u_id)
    echo 'Совпадение';
 
Что не так делаю?
Кто ищет и разбирается - тот докопается!
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: RBAC и описание ролей в файле

Сообщение lancedevnull »

плохо читаешь мануалы
в примерах все bizRule в кавычках
гугли про Expression
Аватара пользователя
Black Bars
Сообщения: 47
Зарегистрирован: 2013.10.23, 18:55

Re: RBAC и описание ролей в файле

Сообщение Black Bars »

собственно такой вариант bizRule тоже не работает

Код: Выделить всё

'bizRule'=>'Yii::app()->user->id == (Users::model()->findByAttributes(array(\'u_login\'=>$params[\'goods\'][\'g_author\']))->u_id)',
Кто ищет и разбирается - тот докопается!
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: RBAC и описание ролей в файле

Сообщение lancedevnull »

проблема в твоем коде - должен работать
Аватара пользователя
Black Bars
Сообщения: 47
Зарегистрирован: 2013.10.23, 18:55

Re: RBAC и описание ролей в файле

Сообщение Black Bars »

Black Bars писал(а):собственно такой вариант bizRule тоже не работает

Код: Выделить всё

'bizRule'=>'Yii::app()->user->id == (Users::model()->findByAttributes(array(\'u_login\'=>$params[\'goods\'][\'g_author\']))->u_id)',
Все, разобрался. Работает если сделать вот так

Код: Выделить всё

'bizRule'=>'return Yii::app()->user->id == (Users::model()->findByAttributes(array("u_login"=>$params["goods"]["g_author"]))->u_id);',
А если убрать в конце ; то работать перестаёт
Кто ищет и разбирается - тот докопается!
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: RBAC и описание ролей в файле

Сообщение lancedevnull »

не помню, return надо или нет, но ";" точно - я просмотрел
Аватара пользователя
Black Bars
Сообщения: 47
Зарегистрирован: 2013.10.23, 18:55

Re: RBAC и описание ролей в файле

Сообщение Black Bars »

Господа, опять вопрос по RBAC - на localhost как обычно все работает, а вот на выгрузке всплывает ошибка.
Роль

Код: Выделить всё

'Пользователь' => array(
        'type' => CAuthItem::TYPE_ROLE,
        'description' => 'Пользователь сайта',
        'children' => array(
            'guest', // унаследуемся от гостя
        ),
        'bizRule' => null,
        'data' => null,
    ), 
В конфиге main.php

Код: Выделить всё

'authManager'=>array(
            'class' => 'PhpAuthManager',        
            'defaultRoles' => array('guest'),    
        ), 
На странице site / index.php

Код: Выделить всё

<?php if(Yii::app()->user->checkAccess('Пользователь')): ?>
Получаю ошибку в "protected/views/site/index.php(147):", это как раз проверка которая выше
Ошибка 500 Undefined index: data

И в framework/web/auth/CPhpAuthManager.php:421, там

Код: Выделить всё

$this->_items[$name]=new CAuthItem($this,$name,$item['type'],$item['description'],$item['bizRule'],$item['data']); 
Что и почему происходит?
Кто ищет и разбирается - тот докопается!
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: RBAC и описание ролей в файле

Сообщение TranceSmile »

Black Bars писал(а):Господа, опять вопрос по RBAC - на localhost как обычно все работает, а вот на выгрузке всплывает ошибка.
Роль

Код: Выделить всё

'Пользователь' => array(
        'type' => CAuthItem::TYPE_ROLE,
        'description' => 'Пользователь сайта',
        'children' => array(
            'guest', // унаследуемся от гостя
        ),
        'bizRule' => null,
        'data' => null,
    ),
В конфиге main.php

Код: Выделить всё

'authManager'=>array(
            'class' => 'PhpAuthManager',        
            'defaultRoles' => array('guest'),    
        ),
На странице site / index.php

Код: Выделить всё

<?php if(Yii::app()->user->checkAccess('Пользователь')): ?>
Получаю ошибку в "protected/views/site/index.php(147):", это как раз проверка которая выше
Ошибка 500 Undefined index: data

И в framework/web/auth/CPhpAuthManager.php:421, там

Код: Выделить всё

$this->_items[$name]=new CAuthItem($this,$name,$item['type'],$item['description'],$item['bizRule'],$item['data']);
Что и почему происходит?
Чаще всего это присходит из-за смены ос с windows на nix подобные. Виндовс регистро независимая, а никс зависимая.
Изображение
DLST
Сообщения: 7
Зарегистрирован: 2014.08.27, 11:11

Re: RBAC и описание ролей в файле

Сообщение DLST »

Сделал все по инструкции. Однако, столкнулся с некоторой трудностью. Если пользователь авторизировался с помощью cookie или сессии, и затем изменить в базе данных пароль, то пользователю все равно предоставляется доступ.
Если же изменить id пользователя или вообще удалить запись с пользователем, то при попытке сделать:

Код: Выделить всё

if(!Yii::app()->user->isGuest){
    $this->assign(Yii::app()->user->role, Yii::app()->user->id);
}
вываливается Exception:

Код: Выделить всё

Неизвестный элемент авторизации "".

/var/www/yii/1.1.15/web/auth/CPhpAuthManager.php(179) 
Поскольку Yii::app()->user->role возвращает NULL.
mishapk
Сообщения: 15
Зарегистрирован: 2014.08.26, 15:48

Re: RBAC и описание ролей в файле

Сообщение mishapk »

Спрятал пункт меню "Пользователи".

Код: Выделить всё

array('label'=>'Users', 'url'=>array('/user/index'),'visible'=>Yii::app()->user->checkAccess('admin')),
Что бы доступ был только администраторам.
Но без входа пользователя ему доступна страница через ссылку. index.php?r=user/index
Подскажите где и что нужно дописать что бы не администратора послали на 403.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: RBAC и описание ролей в файле

Сообщение lynicidn »

в контроллере или юзайте фильтр или сами проверяйте

Код: Выделить всё

if (!$user->checkAccess('admin')) throw new CHttpException(403); 
wpd
Сообщения: 161
Зарегистрирован: 2014.08.22, 12:34
Контактная информация:

Re: RBAC и описание ролей в файле

Сообщение wpd »

Добрый день, может кто-то здесь мне подсказать?
viewtopic.php?f=3&t=20675
Download TV Series in HD http://serialsfree.net/
Ответить