RBAC и описание ролей в файле
Re: RBAC и описание ролей в файле
Sam Dark, добавили бы эту ссылку http://www.simplecoding.org/yii-php-fra ... -rbac.html к статье, думаю всем было бы проще изучать.
Re: RBAC и описание ролей в файле
Здравствуйте, я в точности скопировал ваши коды, но у меня выводит вот такая ошибка:
"Property "CWebApplication.authManager" is read only."
Буду очень благодарен, если скажете как это исправить
"Property "CWebApplication.authManager" is read only."
Буду очень благодарен, если скажете как это исправить
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
а в кофиге прописывали все как надо ?
- RSol
- Сообщения: 325
- Зарегистрирован: 2010.05.07, 08:36
- Откуда: Северодонецк, Украина
- Контактная информация:
Re: RBAC и описание ролей в файле
Будьте добры, дайте больше информации. Строка ошибки, файл и т.д. и собственно тот файл.lolo писал(а):Здравствуйте, я в точности скопировал ваши коды, но у меня выводит вот такая ошибка:
"Property "CWebApplication.authManager" is read only."
Буду очень благодарен, если скажете как это исправить
Re: RBAC и описание ролей в файле
Нет.. он прописал authManager на уровень вышеEkstazi писал(а):а в кофиге прописывали все как надо ?
2 lolo.. Его надо размещать в components
Код: Выделить всё
'components'=>array(
'authManager' => array(
...
Re: RBAC и описание ролей в файле
Может это в статью добавить, а то вот я тоже столкнулсяesche писал(а):Нет.. он прописал authManager на уровень вышеEkstazi писал(а):а в кофиге прописывали все как надо ?
2 lolo.. Его надо размещать в componentsКод: Выделить всё
'components'=>array( 'authManager' => array(
Re: RBAC и описание ролей в файле
Добрый день. Я только начала работать с yii и не могу разобраться описанием ролей.
Делаю как в RBAC и описание ролей в файле выдает ошибку Property "CWebApplication.authManager" is read only.
вот на этом остановилась и не знаю где определить:
Чтобы приложение использовало наш класс WebUser, необходимо сконфигурировать компонент user:
'user'=>array(
'class' => 'WebUser',
// …
),
Еще не знаю куда надо вставить этот код
if(Yii::app()->user->checkAccess('administrator')){
echo "hello, I'm administrator";
}
И какой должен быть файл authManager ?
Делаю как в RBAC и описание ролей в файле выдает ошибку Property "CWebApplication.authManager" is read only.
вот на этом остановилась и не знаю где определить:
Чтобы приложение использовало наш класс WebUser, необходимо сконфигурировать компонент user:
'user'=>array(
'class' => 'WebUser',
// …
),
Еще не знаю куда надо вставить этот код
if(Yii::app()->user->checkAccess('administrator')){
echo "hello, I'm administrator";
}
И какой должен быть файл authManager ?
-
- Сообщения: 350
- Зарегистрирован: 2009.09.17, 16:47
- Откуда: Санкт-Петербург
- Контактная информация:
Re: RBAC и описание ролей в файле
Property "CWebApplication.authManager" is read only.
Проверьте у вас описание authManager находится в разделе components конфига?
Проверьте у вас описание authManager находится в разделе components конфига?
Предупрежден - значит вооружен.
devKP.ru
devKP.ru
Re: RBAC и описание ролей в файле
Ошибку перестало выдовать, но теперь не заходит под пользователем пишет Incorrect username or password. Что не так?
Re: RBAC и описание ролей в файле
Здравствуйте !
Сначала прочитал материал в руководстве по поводу использования RBAC, после чего вашу статью "RBAC и описание ролей в файле" .
В руководстве мне все более менее понятно, а вот ваша статья слегка запутала.
Объясните пожалуйста для чего потребовалось переопределять PhpAuthManager и WebUser - разве без этого RBAC работать не будет ?
Сначала прочитал материал в руководстве по поводу использования RBAC, после чего вашу статью "RBAC и описание ролей в файле" .
В руководстве мне все более менее понятно, а вот ваша статья слегка запутала.
Объясните пожалуйста для чего потребовалось переопределять PhpAuthManager и WebUser - разве без этого RBAC работать не будет ?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Будет. Рецепт для тех, кто хочет писать правила руками и хранить их рядом с конфигами. Можно делать так, как официальном руководстве настроив в конфиге по вкусу.
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Если класс не переопределять, то для каждого пользователя будет храниться запись о связи роли с ним в auth.php. Согласитесь, тогда уж лучше CDbAuthManager использовать или вариант из рецепта.
Re: RBAC и описание ролей в файле
Гм ...Ekstazi писал(а):Если класс не переопределять, то для каждого пользователя будет храниться запись о связи роли с ним в auth.php. Согласитесь, тогда уж лучше CDbAuthManager использовать или вариант из рецепта.
Пока не могу понять, чем плохо, если запись о роли пользователя хранится в auth.php.
Разве что как-то децентрализовано получается - основные сведения о пользователе в БД, а о его роли в auth.php
И, кстати, разве в вашем случае эта информация в auth.php не сохраняется ?
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Вы представляете себе php файл размером больше 100 мб с записями о связи каждого конкретного пользователя с ролью. Дальше думаю сами поймете - потребление памяти, скорость работы такого подхода и так далее.
Re: RBAC и описание ролей в файле
Мне кажется, делать что-то с паролем в beforeValidate некорректно, т. к. станет невозможно проверить например array('password', 'length', ...) или array('password', 'match', ...).
Так же нет никакого смысла хешировать confirmPassword - лишняя нагрузка. Сравнить их можно и в сыром виде, а вот захешировать пароль можно либо в afterValidate... а лучше даже beforeSave который вызовется в последний момент.
Так же нет никакого смысла хешировать confirmPassword - лишняя нагрузка. Сравнить их можно и в сыром виде, а вот захешировать пароль можно либо в afterValidate... а лучше даже beforeSave который вызовется в последний момент.
mc-bear писал(а):Еще вариант вместоиспользовать фильтрыКод: Выделить всё
protected function beforeValidate(){ $this->password = md5($this->password); return parent::beforeValidate(); }
Код: Выделить всё
public function rules() { array('password','hashPassword','on'=>'register,editPassword'), array('confirmPassword','hashPassword','on'=>'register,editPassword'), } public function hashPassword($attribute,$params) { return md5($this->$attribute) }
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: RBAC и описание ролей в файле
Согласен. Это были мысли в слух ) Обсуждались именно использование фильтров для хеша пароля. Если в методе rules выставить правила в нужно поряке (проверка длину, сложность, сравнить с поврежденным) то можно и хеш в последнем правиле вычислить.egorio писал(а):Мне кажется, делать что-то с паролем в beforeValidate некорректно, т. к. станет невозможно проверить например array('password', 'length', ...) или array('password', 'match', ...).
Так же нет никакого смысла хешировать confirmPassword - лишняя нагрузка. Сравнить их можно и в сыром виде, а вот захешировать пароль можно либо в afterValidate... а лучше даже beforeSave который вызовется в последний момент.
Жду Yii 3!
Re: RBAC и описание ролей в файле
Подскажите чем плох вариант хранить роли в сессии, что б не было постоянного лишнего запроса к базе? не могу найти обсуждения этого варианта…
Спасибо.
Спасибо.
Re: RBAC и описание ролей в файле
Здравствуйте. На форуме уже спрашивали как выглядит в auth.php определение задач и операций
Я делаю следующим образом:
auth.php
Когда пытаюсь применить
Возникает ошибка Illegal offset type in isset or empty
Я правильно прописываю в auth.php?
И второй вопрос: у меня отображается список постов, я хочу что бы возможно было редактировать только собственные посты. В мануале говорится
Предполагаю, что в случае прописывания это выглядит так? (Если в предыдущем вопросе правильно прописываю)
а в контроллере
Так примерно?
Я этот вопрос решил иначе
В моделе Post
Работает, но при попытке применить фильтрацию данных в admin (название, черновик/опубликованное...) Ajax высвечивает ошибку
Error 500: <h1>CDbException</h1>
<p>CDbCommand failed to execute the SQL statement:...
Я так понимаю, что запрос пытается отфильтровать все записи а стоит ограничение на записи зашедшего юзера?
Как мне правильно выполнить редактирование записей только их владельцами?
Код: Выделить всё
'showPage' => array('type'=>CAuthItem::TYPE_OPERATION, 'description'=>'Просмотр страницы'),
auth.php
Код: Выделить всё
...
'administrator' => array(
'type' => CAuthItem::TYPE_ROLE,
'description' => 'Administrator',
'children' => array(
'moderator', // позволим админу всё, что позволено модератору
'deleteComments'=>array(
'type'=>CAuthItem::TYPE_ROLE,
'description'=>'Del comments',
),
),
....
Код: Выделить всё
if(Yii::app()->user->checkAccess('deleteComments')) { ... }
Я правильно прописываю в auth.php?
И второй вопрос: у меня отображается список постов, я хочу что бы возможно было редактировать только собственные посты. В мануале говорится
Код: Выделить всё
$bizRule='return Yii::app()->user->id==$params["post"]->authID;';
$task=$auth->createTask('updateOwnPost','редактирование своей записи',$bizRule);
Код: Выделить всё
'administrator' => array(
'type' => CAuthItem::TYPE_ROLE,
'description' => 'Administrator',
'children' => array(
'moderator', // позволим админу всё, что позволено модератору
'changeOwnPosts'=>array(
'type'=>CAuthItem::TYPE_ROLE,
'description'=>change posts',
'bizRule'=> Yii::app()->user->id==$params["post"]->author_id,
),
),
Код: Выделить всё
Yii::app()->user->checkAccess('changeOwnPosts', array('user'=>$model))
Я этот вопрос решил иначе
В моделе Post
Код: Выделить всё
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('title',$this->title,true);
$criteria->compare('status',$this->status);
$criteria->compare('category_id',$this->category_id);
[b]$criteria->addCondition('author_id=:author_id');
$criteria->params=array(':author_id'=>Yii::app()->user->id);[/b]
return new CActiveDataProvider('Post', array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'status, update_time DESC',
),
));
}
Error 500: <h1>CDbException</h1>
<p>CDbCommand failed to execute the SQL statement:...
Я так понимаю, что запрос пытается отфильтровать все записи а стоит ограничение на записи зашедшего юзера?
Как мне правильно выполнить редактирование записей только их владельцами?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Нет. Неправильно. Вложенные описания не поддерживаются. В 'children' указываются только названия.
Нравится Yii? Давайте сделаем его лучше!.