Авторизация возвращает false в форме запроса - PullRequest
0 голосов
/ 20 января 2019

В запросе формы мне нужно проверить, может ли пользователь обновить Vehicle.У меня есть следующий метод:

public function authorize()
{
    $vehicle = Vehicle::find($this->route('vehicle'));

    return $vehicle and $this->user()->can('update', $vehicle);
}

Я проверил с помощью dd и $this->user()->can('update', $vehicle) возвращает false, даже если я возвращаю значение update политики в true.Я попробовал политику в контроллере, и у меня не было проблем.Это похоже на то, что метод can не может найти политику update, пока он зарегистрирован.

Почему он не работает?

1 Ответ

0 голосов
/ 20 января 2019

Это похоже на проблему, с которой я столкнулся давным-давно при использовании route () в функции pull для класса - похоже, он извлекает массив. Как вы сказали, это не то, что отражено в документации.

Посмотрите отчет об ошибке Laravel здесь .

Есть потенциальные обходные пути, если это действительно ваша проблема. Цитируется со страницы вопроса (укажите автомобиль для пользователя или что-то еще):

$route = $request->route();
$user_id = is_array($route) ? $route[2]['user_id'] : $route->parameter('user_id');

Довольно уродливо, я знаю. Но вы также можете немного изменить свою архитектуру и добавить идентификатор, как при обычном методе контроллера, если хотите, вроде:

public function myNewPreAuthThing(Request $request, $id){}

А затем отправьте правильный идентификатор авторизации. В любом случае, это не чисто, я знаю. Но ... я думаю, что вы наткнулись на ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...