Настройка own_update в RBAC YII2
Настройка правила RBAC Yii2 для редактирования собственной новости пользователя. При этом администратор сможет редактировать все новости.
Как задать own_update_news для AccessControl
1) Создаем правило:
<?php namespace common\rbac; class AuthorRule extends \yii\rbac\Rule { public $name = 'isAuthor'; /** * @param string|integer $user ID пользователя. * @param Item $item роль или разрешение с которым это правило ассоциировано * @param array $params параметры, переданные в ManagerInterface::checkAccess(), например при вызове проверки * @return boolean a value indicating whether the rule permits the role or permission it is associated with. */ public function execute($user, $item, $params) { return isset($params['model']) ? $params['model']->user_id == $user : false; } } ?>
2) Добавляем правило в yii2-admin
3) Добавляем одноименное разрешение
4) Зададим наследования:
4.1) Роли ADMIN добавим update_news
4.2) Роли EDITOR добавим own_update_news
4.3) Разрешению own_update_news добавим update_news (чтобы в следующем шаге использовать update_news а не own_update_news)
5) Зададим в контроллере в behaviors:
это пример только для страницы update
'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => ['edit_news'], 'actions' => ['update'], 'roleParams' => function($rule) { return ['model' => News::findOne(Yii::$app->request->get('id'))]; } ], ], ],
Оформление доступа | |
---|---|
Электронный учебник за 1 день (Видеокурс) + ключ доступа к видеороликам в разделе TurboSite |
990 руб. |
СНЯТО С ПРОДАЖИ
Видеокурс будет отправлен на {{ email }}. Нажмите "Перевести"
*Оформляя заказ я даю согласие на обработку персональных данных
- Внимание!
- Если в процессе оплаты, указали неверный email-адрес или письмо с доступами к курсу не пришло, обязательно напишите нам в техподдержку (внизу экрана). Поможем!
Порядок оплаты и получения видеокурса |
---|
1) Заполните имя и email-адрес |
2) Нажмите кнопку "Перейти к оплате" |
3) Нажмите кнопку "Перевести" и пройдите процесс оплаты |
4) После оплаты на указанный email-адрес будет отправлен видеокурс |
5) Если возникнут трудности, а также за другими способами оплаты обращайтесь в техподдержку (справа-внизу экрана) или пишите мне на почту support@artursharipov.ru |