Мне нужно авторизовать пользователей на форуме. Так в лезвии у меня есть @can('editPost', $post)
, прежде чем показывать форму для ответа на тему. Мой класс PostPolicy
имеет метод editPost
, который проверяет подлинность, если это пользовательский пост.Политика авторизации без модели
Однако проблема возникает, когда я хочу сделать простую проверку, например deletePost()
. Это проверяет, является ли Auth::user()->isAdmin
public function deletePost(User $user) {
return Auth::user()->isAdmin;
// return $user->isAdmin
}
Однако это даже не дозвонились, так как я не передавая экземпляр Post
Моя реальное применение мир гораздо сложнее, но я используя isAdmin
в качестве простого примера.
Я думаю, определение $gate->define('deletePost', 'App\Policies\[email protected]');
в AuthServiceProvider
может работать, но будет в конечном итоге отделяя мои определения и методы, и в конечном счете для большого приложения загромождать AuthServiceProvider
Просто для кого-то ищет ответ, вот хороший способ зарегистрировать глобальную политику без использования модели bi nding. http://laravel-tricks.com/tricks/using-51-authorization-without-models –