модуль Rights

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
igor87t
Сообщения: 41
Зарегистрирован: 2012.04.30, 16:39

модуль Rights

Сообщение igor87t »

Всем привет.
В общем, мне нужен был инструмент для управления ролями.
Создавать, назначать ролям задачи, операции. Ну короче динамическое управление ролями.
Посмотрев существующие решении, я попробовал прикрутить модуль Rights.

Прикрутил, поклацал, мне понравился.
Если пользователь авторизирован - там да, нормально выхватываются роли пользователей, вобщем работает
с авторизироваными пользователями как часы.
Проблема с незалогинеными.
Не пойму как назначить уже описанную, и сохраненной в базе, роль гостя, незалогиненым пользователям.

Кто использовал этот модуль, подскажите как настроить присвоение роли для не залогиненым пользователям?
Почитал доку, там все на англиском, я не особо силен в нем, но настроить получилось, но момент с ролью guest там как-то не нашел.
Помогите, мож есть ссылочка где описана настройка именно этого момента, или так объясните.

Спасибо
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

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

'authManager'=>array(
   'class'=>'RDbAuthManager',
   'defaultRoles'=>array('Guest'),
   ...
),
 
igor87t
Сообщения: 41
Зарегистрирован: 2012.04.30, 16:39

Re: модуль Rights

Сообщение igor87t »

Dismal только нужно прописать в конфиге ?

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

...
'defaultRoles'=>array('Guest'),
...
 
Но почему-то - мне выдавало ошибку, (насколько я помню, просто проэкта дома нету, он на работе)
что типо параметр defaultRoles не найдем. Этот параметр нужно определять в RightModule.php?
Или такого не может быть?
Спасибо
igor87t
Сообщения: 41
Зарегистрирован: 2012.04.30, 16:39

Re: модуль Rights

Сообщение igor87t »

аааа, сори, я походу этот параметр писал в

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

'rights' => array(
    ...
    'guestName' => 'Guest',                     // Name of the guest role. 
    'defaultRoles' => 'Guest', 
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

Вопрос не по совсем по теме поста, но тоже про модуль Rights
Используется модуль Yii-user - все работает вроде бы как надо.
Пытаюсь поставить Rights - делаю все как в статье http://habrahabr.ru/post/127052/
Но возникает проблема-
постоянный редирект на site/login - т.е. браузер выдает ошибку - что редирект зациклен.
Разбиравшись мне показалось - что там идет редирект с site/login на profile - и обратно на site/login
В чем может быть дело?
Может кто сталкивался?
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

porcelanosa писал(а): постоянный редирект на site/login - т.е. браузер выдает ошибку - что редирект зациклен.
Нет прав на site/login у роли пользователя (скорее всего гость)
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

Dismal писал(а):
porcelanosa писал(а): постоянный редирект на site/login - т.е. браузер выдает ошибку - что редирект зациклен.
Нет прав на site/login у роли пользователя (скорее всего гость)
Спасибо, вроде бы заработало.
А права я правильно выставляю в RController.

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

    public function allowedActions()
    {
        return 'view, cat_view, index, news_view, error, site/login';
    } 
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

porcelanosa писал(а):А права я правильно выставляю в RController.

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

    public function allowedActions()
    {
        return 'view, cat_view, index, news_view, error, site/login';
    }
Можно через allowedActions(), можно вообще не указывать фильтр Rights чтобы доступ ко всему контроллеру дать.
Можно создать роль по умолчанию например Guest и добавить правило RBAC, разрешающее гостям ходить на site/login
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

Dismal писал(а): Можно через allowedActions(), можно вообще не указывать фильтр Rights чтобы доступ ко всему контроллеру дать.
Можно создать роль по умолчанию например Guest и добавить правило RBAC, разрешающее гостям ходить на site/login
1) А если убрать фильтр - как он вообще работать будет?
2) Роль по умолчанию создана. А вот как ее добавить в RBAC? - Т.е. она есть в таблице
Изображение
и прописана вроде бы

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

        'authManager'=>array(
            'class'=>'RDbAuthManager',
            'defaultRoles'=>array('Authenticated', 'Guest'),// дефолтная роль
            'connectionID'=>'db',
        ), 
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

porcelanosa писал(а):1) А если убрать фильтр - как он вообще работать будет?
Просто не будет ограничений в контроллере для всех. Если контроллер полностью публичный, например во фронтенде.
porcelanosa писал(а): 2) Роль по умолчанию создана. А вот как ее добавить в RBAC? - Т.е. она есть в таблице
На вкладке Permissions создайте item для контроллера и нужного action, и добавьте разрешение гостям (Assign в колонке Guest)
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: модуль Rights

Сообщение kosenka »

Отпишусть тут, чтобы не поднимать новую тему.
Модуль поставил, но при попытке зайти на закладку Assignments получаю ошибку:
include($data->getAssignmentsText(CAuthItem.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

Никто не подскажет в чем причина?

версии: rights 1.3.0, yii 1.1.12-dev
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

Опять про связку yii-user и rights
А как все-таки определить, что пользователь superUser или там какая у него роль.
Yii::app()->user->isSuperuser у меня получается пустой
И в меню все равно выводится ссылка

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

array('url' => '/cp', 'label' => 'admin', 'visible' => Yii::app()->user->isSuperuser),
- впрочем даже для разлогиненного пользователя
Может где-то есть описание использования
Нашла вот но че-то там половина не работает.

На данный момент главный вопрос: как определить роль пользователя (хотя бы суперюзер или нет) и его возможности (permissions) в конкретном контроллере (или view)

Буду благодарна за примеры использования.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

Создайте роль admin присвойте ее пользователю.
Проверять можно так:

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

array('url' => '/cp', 'label' => 'admin', 'visible'=>Yii::app()->authManager->isAssigned('admin',Yii::app()->user->id)),
Все доступные функции можно посмотреть в классах CDbAuthManager и RDbAuthManager

Проверить доступ в контроллере можно например так:

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

if (!YII::app()->user->checkAccess('Admin.Article.View',array('owner_id'=>$model->owner_id)))
            throw new CHttpException(403,'Access denied.');
где, array('owner_id'=>$model->owner_id) - это параметры bizrule (использовать необязательно)
Но если все таки bizrule используете, то в базе оно будет выглядеть так:
return ($params['owner_id'] == YII::app()->user->id);
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

Dismal писал(а):Создайте роль admin присвойте ее пользователю.
Проверять можно так:

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

array('url' => '/cp', 'label' => 'admin', 'visible'=>Yii::app()->authManager->isAssigned('admin',Yii::app()->user->id)),
 
Все доступные функции можно посмотреть в классах CDbAuthManager и RDbAuthManager

Проверить доступ в контроллере можно например так:

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

if (!YII::app()->user->checkAccess('Admin.Article.View',array('owner_id'=>$model->owner_id)))
            throw new CHttpException(403,'Access denied.'); 
где, array('owner_id'=>$model->owner_id) - это параметры bizrule (использовать необязательно)
Но если все таки bizrule используете, то в базе оно будет выглядеть так:
return ($params['owner_id'] == YII::app()->user->id);
Так с этим разобрались
А вот как мне работать с rights?
Есть задача, к примеру, редактирование новостей:
контроллер NewsController.php находится в папке controllers/cp/ - экшен actionUpdate()
Создаем операцию
Изображение
Создаем роль
Изображение
Правильно это?
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Dismal
Сообщения: 247
Зарегистрирован: 2011.10.16, 13:25

Re: модуль Rights

Сообщение Dismal »

на вкладке "разрешения" должны генерироваться item'ы для контроллеров.
Там же в колонке под именем роли напротив нужного item'а жмем Assign(назначить).
На вкладке "операции" можно прописывать bizrule для операций.


В данном случае скорее всего у роли "Редактор новостей" будет parent "Админ"
на вкладке "разрешения" даем редактору доступ к операции "cp/news/update"

Если сгенерирована операция автоматически оно должно уже работать. Но не знаю как оно ведет себя с контроллерами из подпапки
Так что возможо потребуется в контроллере:

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

if (!YII::app()->user->checkAccess('cp/news/update')
            throw new CHttpException(403,'Access denied.'); 
AlexMist
Сообщения: 109
Зарегистрирован: 2011.09.16, 14:13
Контактная информация:

Re: модуль Rights

Сообщение AlexMist »

kosenka писал(а):Отпишусть тут, чтобы не поднимать новую тему.
Модуль поставил, но при попытке зайти на закладку Assignments получаю ошибку:
include($data->getAssignmentsText(CAuthItem.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

Никто не подскажет в чем причина?

версии: rights 1.3.0, yii 1.1.12-dev
Уффффффф , спасибо что версию написала, На 1.1.11 тоже самое на 1.1.10 ВСЕ НОРМАЛЬНО !
Проверил еще раз , видимо это связано с php 5.2 , т.к. на 5.3 все работает ! Что от там в апдейтах не так...
Последний раз редактировалось AlexMist 2012.08.05, 13:49, всего редактировалось 1 раз.
AlexMist
Сообщения: 109
Зарегистрирован: 2011.09.16, 14:13
Контактная информация:

Re: модуль Rights

Сообщение AlexMist »

del
Последний раз редактировалось AlexMist 2012.08.04, 17:58, всего редактировалось 1 раз.
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

AlexMist писал(а):
AlexMist писал(а):
kosenka писал(а):Отпишусть тут, чтобы не поднимать новую тему.
Модуль поставил, но при попытке зайти на закладку Assignments получаю ошибку:
include($data->getAssignmentsText(CAuthItem.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

Никто не подскажет в чем причина?

версии: rights 1.3.0, yii 1.1.12-dev
Уффффффф , спасибо что версию написала, На 1.1.11 тоже самое, а на 1.1.10 ВСЕ НОРМАЛЬНО !
Проверил еще раз , видимо это связано с php 5.2 , т.к. на 5.3 все работает ! Что от там в апдейтах не так...
1.1.11 -требования php 5.3 минимальные.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
AlexMist
Сообщения: 109
Зарегистрирован: 2011.09.16, 14:13
Контактная информация:

Re: модуль Rights

Сообщение AlexMist »

Странно , но в requirements все тот же 5,1

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

version_compare(PHP_VERSION,"5.1.0",">="),
 
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: модуль Rights

Сообщение porcelanosa »

AlexMist писал(а):Странно , но в requirements все тот же 5,1

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

version_compare(PHP_VERSION,"5.1.0",">="),
да извините Requirement PHP 5.1.0 or above
Это я с 2.0 перепутала
Our next major release Yii 2.0 will be full rebuilt on top of PHP 5.3.0+,
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Ответить