Проверка разрешения в контроллере в Laravel
После Gate::define правило
можно проверить в контроллере.
Gate::allows вернёт
true, если можно.
Gate::denies - true,
если нельзя:
<?php
use Illuminate\Support\Facades\Gate;
public function edit(Post $post)
{
if (Gate::denies('update-post', $post)) {
abort(403);
}
return view('posts.edit', ['post' => $post]);
}
?>
Вторым аргументом передаём тот же
пост, что ожидает правило.
abort(403) - ответ
«запрещено»: пользователь вошёл,
но к этому посту доступа нет.
Тот же смысл через allows:
<?php
if (! Gate::allows('update-post', $post)) {
abort(403);
}
?>
В действии edit запретите
доступ через Gate::denies
и abort(403).
В действии удаления проверьте
правило delete-post
через Gate::allows.