Как сделать CRUD отображение данных только этого пользователя?

Здавствуйте.
Сделал через gii генератор crud таблицу новостей с полями: `id`, `parent_id`, `title`, `annot`, `body`.
Как сделать так, чтобы отображались только те записи, где `parent_id` = ID пользователя, залогиненого в системе (Yii::$app->user->id)?
+ разрешение на редактирование данных, потому что в ссылку вида localhost/news/update/1 можно подставить любой ID и соответственно редактировать чужие записи
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
VirmarY
@VirmarY
Full-stack web developer
В actionIndex у вас скорее есть строчка вроде этой:
$models = News::find()->all();
У вас же должно быть что-то вроде:
$models = News::find()->where(['parent_id' => Yii:$app->user->id])->all();

А вообще изучите yii-db-activerecord и yii-db-activequery

Про разрешение на редактирование: ну проверьте в actionUpdate равенство parent_id и id текущего пользователя. Или сразу смотрите в сторону RBAC.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
serhioli
@serhioli
Вам скорее не фильтрация, а именованные группы условий нужны, а для удобства, даже лучше defaultScope с проверкой на админа(или право на просмотр всего)
Здесь подробнее:
www.yiiframework.com/doc/guide/1.1/ru/database.ar#...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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