Я использую Laravel Policy и проверяю разрешения, созданные с помощью пакета Spatie Laravel-Permissions.
Для вызова API с учетными данными клиента authorizeResource () в конструкторе Controller возвращает 403. Если этот параметр удален, он возвращает ожидаемые результаты.
NpoPolicy.php
public function view(User $user, Npo $npo)
{
return $user->can('npo.view');
}
NpoController.php
public function __construct()
{
$this->authorizeResource(Npo::class);
}
api.php
Route::middleware('client')->resource('/npo', 'NpoController');
Запрос API
URL: https://my -app.dev / api / npo / 1
Метод: GET
Когда я закомментирую метод authorizeResource в конструкторе контроллера, я получаю ожидаемый результат:
{
"npos": {
"id":1,
"name":"Bailey and Sons",
"contact_person_name":"Mr. Davion Mayert",
"created_at":"2019-06-13 17:39:25",
"updated_at":"2019-06-13 17:39:25"
}
}
Мне известно, что для политики Laravel требуется объект модели User, и поэтому в моем случае политика возвращает ответ 403. Существует ли общая практика обработки запросов API (с учетными данными клиента) в этих случаях?