У нас есть разрешение "updateOwnPost", которое использует правило, принимающее во входных данных модель Post.
Проверить, разрешено ли пользователю редактировать пост мы можем следующим образом:
Yii::$app->user->can('updateOwnPost', ['post' => $post])
Вопрос в том, как описать данное ограничение для действия контроллера в AFC. Решил проблему таким образом:
Код: Выделить всё
class PostController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['update'],
'allow' => true,
'matchCallback' => function ($rule, $action) {
$id = Yii::$app->request->get('id');
return Yii::$app->user->can('updateOwnPost', ['post' => Post::findOne($id)]);
}
],
.......
}