Я новичок в Laravel (мы используем 5.0 на работе). Прямо сейчас, когда мы отвечаем на запрос API в контроллере, мы снова и снова переписываем один и тот же код для ответа на несанкционированные действия. Например,Как поймать исключения контроллера laravel
public function getUsers(){
if (Entrust::can('users.view')){
$users = Users::get();
return response()->done($users, 200);
} else {
return response()->unauthorized('users.view');
}
}
Это становится все более и более сложным, если у нас есть разные разрешения, которые могут позволить получить запрос API.
Я хотел бы просто исключить какое-либо исключение, если пользователь не может выполнить запрос API. Например,
public function getUsers(){
require('users.view'); // throws an UnauthorizedException if current user doesn't have 'users.view' permission
$users = User::get();
return response()->done($users, 200);
}
public function someOtherMethod(){
if (!Entrust::can('permission1') && !Entrust::can('permission2')){
throw new UnauthorizedException(['permission1', 'permission2']);
}
// some other stuff
}
Но я не знаю, что код вызывает функцию API, ни где завернуть этот вызов в Try/уловом. Достаточно легко закодировать UnauthorizedException и легко преобразовать его в json, но где я могу поместить обработчик? Как я уже сказал, я новичок в Laravel, и я не знаю, как он справляется с этими исключениями.
В идеале, независимо от решения, которое я нахожу, я хотел бы распространить его на другие исключения, чтобы мы могли иметь последовательные ответы json на основе общих исключений.
Я только начинаю копаться в Laravel 5, но я бы посмотрел Middleware, если это то, что выполняется на нескольких маршрутах. – mAAdhaTTah
Это именно то, что мне нужно (я получил его работу). Если вы добавите ответ на этот вопрос, я соглашусь с ним и прокомментирую точные шаги, которые я предпринял. – whiterook6
Done - рад, что у вас это работает! – mAAdhaTTah