Я сталкиваюсь с проблемой, когда политики Ларавела не были запускаются, как и ожидалось.
Код: Выделить всё
public function validate(Request $request)
{
$request->validate([
'link_code' => 'required|string',
]);
$data = json_decode($request->getContent(), true);
/** @var \App\Models\ConnectionCode|null $code */
$code = \App\Models\ConnectionCode::where('code', $data['link_code'])->first();
Gate::authorize('validateConnection', $code);
// Additional logic here...
}
< /code>
Я также попробовал: < /p>
$code = \App\Models\ConnectionCode::where('code', $data['link_code'])->firstOrFail();
Метод политики validateconnection () существует и работает, когда модель вводится непосредственно через привязку модели маршрута (например, другие методы контроллера), но здесь кажется, что Ларавел не распознает модель и
не называют политику во всех -без ошибки, ничто. />
Код: Выделить всё
public function validateConnection(User $user, ConnectionCode $code): bool
{
return $code->device->user_id === $user->id;
}
Я проверил, что политика зарегистрирована в работе AuthserviceProvider , и другие методы политики на ConnectCode , когда модель вводится через маршрут. Есть ли способ явно сказать Ларавелу, какой метод политики использовать, когда модель не связана через маршрут? Правильный класс политики-но validateconnection () по-прежнему не вызывается при использовании Gate :: Authorize () в этом контексте контроллера. Все еще немного застрял в том, почему это молча не удается.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... ynamically