В моем проекте Laravel 5.8 я внедряю систему репутации, аналогичную системе Stack Exchange: например, пользователи могут отвечать на обсуждения, только если они имеют репутацию "Уровня 3".
Я хотел использовать систему политик Laravel для построения логики разрешений, как в моем файле DiscussionPolicy:
public function reply(User $user)
{
$result = true;
if ($user->current_level < 3) {
$result = false;
//I want to inject a custom error message here
}
return $result;
}
Все работает, но пользователи получают страницу 403 без каких-либо объяснений, и я хотел найти элегантный способ сказать им, что они не могут выполнить это действие, потому что у них нет Уровня 3.
Не могли бы вы предложить способ как-то внедрить это сообщение, чтобы оно отображалось на моей странице 403.blade.php? Я смог сделать это, мигнув переменную в сеансе, но я не думаю, что это элегантно, я хотел бы использовать что-то вроде MessageBag (Illuminate \ Support \ MessageBag).