Как проверять владельца сущности в YII Rights перед выполнением экшна?

Уверен многие сталкивались с необходимостью выдать доступ к определенному действию не только исходя из роли пользователя, но и по доп. параметрам.
Возьмем самый распространенный пример:
Есть новости, нужно дать возможность редактировать только авторам. Т.е. сравнивать значение поля author_id и значение Yii::app()->user->id;
Всё достаточно просто пока проверка осуществляется через вызов Yii::app()->user->checkAccess().

Я столкнулся с такой проблемой. Хочу проверять является ли пользователь автором перед тем как выполнять actionUpdate. Мне такая логика видится более правильно чем в самом actionUpdate вызывать Yii::app()->user->checkAccess(), если я ошибаюсь, поправьте.

Нашел очень хорошую статью habrahabr.ru/post/177873/, все ясно и понятно, но как это использовать совместно с Yii Rights? Как указать модулю Rights что при проверке правила на update нужно еще добавить параметры чтобы условие bizrule корректно могло быть проверено? В статье параметры добавляются так:
public function accessRules() {
        return array(
            ...
            array('allow',
                'actions' => array('update'),
                'roles' => array(
                    'updateNews' => array(
                        'news' => $this->news
                )),
            ),
            ...
            );
    }

Но у меня то ведь accessRules в БД.
  • Вопрос задан
  • 2729 просмотров
Пригласить эксперта
Ответы на вопрос 1
vyachin
@vyachin
Ищу работу
продолжайте и далее использовать Yii::app()->user->checkAccess(). Бывают ситуации, когда от того какие права у пользователя, назначается свой сценарий валидации модели. Через accessRules такое не получится реализовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы