Запрос не отправляется должным образом при использовании пользовательского FormRequest, но отправляется при использовании по умолчанию - PullRequest
0 голосов
/ 22 октября 2018

Это мой код для входа пользователя в систему с использованием 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, функция будет работать нормально.

Кто-нибудь знает, как это можно решить?

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