2015-05-16 3 views
0

Я новичок в 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 на основе общих исключений.

+0

Я только начинаю копаться в Laravel 5, но я бы посмотрел Middleware, если это то, что выполняется на нескольких маршрутах. – mAAdhaTTah

+0

Это именно то, что мне нужно (я получил его работу). Если вы добавите ответ на этот вопрос, я соглашусь с ним и прокомментирую точные шаги, которые я предпринял. – whiterook6

+0

Done - рад, что у вас это работает! – mAAdhaTTah

ответ

2

Вместо повторения кода ознакомьтесь с реализацией проверки авторизации с помощью Middleware.

Смежные вопросы