Я использую Жадь для отправки почтового запроса на паспорт oauth/token
и вот код:
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 -> email,
'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());
else if ($e->getCode() === 408)
return response()->json('User is deactivated. Please try again', $e->getCode());
return response()->json('Something went wrong on the server.', $e->getCode());
}
}
Что я пытаюсь сделать:
У меня есть активное поле для каждого пользователя 1 is active and 0 is deactivated
.
Я хочу проверить перед входом пользователя, активен он или нет, и отправить ответ с кодом 408 и сообщением, как я сделал в ifутверждение.
Что я пытался сделать:
Я пытался добавить это к User.php
модели:
public function findForPassport($identifier) {
return User::orWhere('email', $identifier)->where('active', 1)->first();
}
Это работаетнормально.
Проблема:
1) Это возвращает ответ с 401, если не активен, и я хочу вернуть 408.
2) Iне знаю, является ли это лучшим способом сделать это или нет.