Laravel: Как я могу написать класс политики для методов API на вложенном контроллере ресурсов? - PullRequest
1 голос
/ 24 марта 2020

У меня есть отношения многие ко многим, с которыми я работаю между User и Task моделями. Пользователь принадлежит многим задачам, а задача принадлежит многим пользователям. У меня есть сводная таблица с именем task_user.

. В моем API у меня есть маршрут, определяемый следующим образом:

Route::get('/users/{user}/tasks', 'TaskUserController@all');

Я хочу написать политику для обеспечения того, чтобы в данный момент вошел в систему пользователь, auth()->user, является пользователем, запрашиваемым в маршруте. По сути, пользователь может просматривать только свои задачи.

Как написать класс политики для вложенного контроллера ресурсов TaskUserController?

1 Ответ

0 голосов
/ 24 марта 2020

Вложение вашего ресурса не имеет ничего общего с созданием политик.

Создайте вашу UserPolicy.

class UserPolicy()
{
    public function view(User $authorizedUser, User $user) {
        return $authorizedUser->is($user);
    }
}

В вашем контроллере вы можете авторизовать действие с помощью помощника authorize() , В качестве альтернативы в форме запроса или промежуточного программного обеспечения.

class TaskController {
    public function all(User $user)) {
        $this->authorize('view', $user);

        return $user->tasks;
    }
}
...