Я создаю 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()