Я хочу использовать user_password
вместо просто password
в качестве имени столбца пароля для базы данных моего API. Итак, вот код метода login()
для получения токена в моем PassportController
:
public function login() {
if (Auth::attempt(['user_login' => request('login'), 'password' => request('user_password')])) {
$user = Auth::user();
$success['token'] = $user->createToken('ToutelaBreizh')->accessToken;
return response()->json(['success' => $success], $this->successStatus);
} else {
return response()->json(['error' => 'Unauthorised.'], 401);
}
}
Параметры запроса к этому контроллеру: login
и password
.
Проблема в том, что я иду на маршрут, связанный с этим контроллером, скажем, POST /api/login
. Я получаю эту ошибку:
ErrorException: неопределенный индекс: пароль в файле ... EloquentUserProvider.php в строке 133
[Первые строки трассировки стека ...]
- ... PassportController.php: 21
21-я строка в моем PassportController - это вторая строка функции входа в систему, которую я разместил выше, и действительно, поле password
не сообщается в учетных данных, которые я написал: я написал user_password
вместо password
, но строка password
жестко задана в EloquentUserProvider.php, строка 133:
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
Как подсказал этот ответ , я попытался переопределить validateForPassportPasswordGrant($password)
в модели User.php
, но это не помогло:
public function validateForPassportPasswordGrant($password)
{
return Hash::check($password, $this->user_password);
}
Как мне сделать, чтобы user_password
было в моей базе данных, а не password
?
Спасибо за вашу помощь.