Это мой код для входа пользователя в систему с использованием Laravel Passport:
public function login(LoginRequest $request)
{
$email = $request->email;
$password = $request->password;
$request->request->add([
'username' => $email,
'password' => $password,
'grant_type' => 'password',
'client_id' => env('PASSWORD_GRANT_CLIENT_ID'),
'client_secret' => env('PASSWORD_GRANT_CLIENT_SECRET'),
'scope' => '*',
]);
$tokenRequest = Request::create(
env('APP_URL') . '/oauth/token',
'post'
);
$response = Route::dispatch($tokenRequest);
return $response;
}
Класс LoginRequest:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|string|email|max:255',
'password' => 'required|min:6',
];
}
Когда я пытаюсь войти в систему с помощью Insomnia
клиента,возвращается следующее:
{
"error": "unsupported_grant_type",
"message": "The authorization grant type is not supported by the
authorization server.",
"hint": "Check that all required parameters have been provided"
}
Я попытался вернуть $request
из функции входа в систему вместо $response
, но он возвращает то, что именно отправлено из функции, поэтому я знаю, что проблема не в том.
Что еще более запутанно, так это то, что если я заменим инъекцию LoginRequest внутри метода login на значение по умолчанию Request
, функция будет работать нормально.
Кто-нибудь знает, как это можно решить?