Я хочу предоставить доступ к странице редактирования только авторам сообщений.
PostController:
public function edit(Vocabulary $vocabulary)
{
if ($vocabulary->user_id != Auth::id()) {
return redirect()
->route('home')
->with('danger', 'You cannot edit another user's vocabulary.');
}
// return view...
}
Итак, мой вопрос - как сжать эту часть кода. Могу ли я использовать меньше строк кода для этого (потому что я должен писать такие блоки множеством методов)?
// I'm checking current User's id and author's id in the post..
if ($vocabulary->user_id != Auth::id()) {
return redirect()
->route('home')
->with('danger', "You cannot edit another user's vocabulary.");
}






Используя промежуточное ПО на странице редактирования и добавьте его в свой маршрут, и если пользователь авторизации является автором, то передайте его, иначе покажите ошибку
public function checkAuthor($Request , closure $next)
{
If( CONDITION FOR CHECKING AUTHOR) {
return response(error message)
}
return $next($Request)
}
Я думаю это поможет
Вы «догадываетесь», что это поможет?
Я настоятельно рекомендую использовать для этого классы Laravel Политика. Просто вам просто нужно создать класс политики для каждой модели, к которой вы хотите предоставить доступ. Таким образом, в классе политики вы можете реализовать разные алгоритмы для каждого действия, такие как Обновить, Удалить и т. д. Вы можете найти более подробную информацию по ссылке ниже:
Да, я все перепробовал, но получил ошибку This action is unauthorized. .. Итак, теперь я не знаю, как это правильно сделать ..
Хорошо, поэтому он выдает исключение 403
Вы можете создать файл лезвия представления в каталоге просмотров / ошибок с именем 403.blade.php.
В этом файле просмотра вы можете показать соответствующее сообщение для всех несанкционированных действий.
Ознакомьтесь с Политикой laravel.com/docs/5.6/authorization