Как я могу ловить ошибки, используя Request :: create (route ('passport.token') - PullRequest
0 голосов
/ 01 мая 2020

Я создаю API и пытаюсь дать пользователю возможность войти в систему.

Сначала я пытался использовать guzzle:

public function login(Request $request)
{
    $http = new \GuzzleHttp\Client;

    try {
        $response = $http->post(config('services.passport.login_endpoint'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => config('services.passport.client_id'),
                'client_secret' => config('services.passport.client_secret'),
                'username' => $request->username,
                'password' => $request->password,
            ]
        ]);
        return $response->getBody();
    } catch (\GuzzleHttp\Exception\BadResponseException $e) {
        if ($e->getCode() === 400) {
            return response()->json('Invalid Request. Please enter a username or a password.', $e->getCode());
        } else if ($e->getCode() === 401) {
            return response()->json('Your credentials are incorrect. Please try again', $e->getCode());
        }

        return response()->json('Something went wrong on the server.', $e->getCode());
    }
}

Я обнаружил, что guzzle не Я не позволю вам использовать localhost в качестве конечной точки, поэтому я перешел на использование REQUEST::CREATE()

public function login(Request $request)
{

    $request->validate([
        'username' => 'required|email',
        'password' => 'required',
    ]);

    $req = Request::create(route('passport.token'), 'POST', [

        'grant_type' => 'password',
        'client_id' => 2,
        'client_secret' => 'client_secret',
        'username' => $request->username,
        'password' => $request->password,
        'scope' => ''
    ]);

    return $response = app()->handle($req);

}

Я ищу что-то, чтобы перехватывать 400 и 401 исключения, используя Request::create()

...