Я пытаюсь переопределить пользовательскую аутентификацию Laravel, проверяя, подтвердил ли пользователь свой адрес электронной почты.В то же время я хотел бы регистрировать попытки аутентификации.Последнее я пытаюсь добиться с двумя слушателями, которые я зарегистрировал в EventServiceProvider.php
'Illuminate\Auth\Events\Login' => [
'App\Listeners\LogSuccessfulLogin',
],
'Illuminate\Auth\Events\Failed' => [
'App\Listeners\LogFailedAuthenticationAttempt',
],
В приложении / Http / Controllers / Auth / LoginController.php у меня есть следующее.
/**
* Validate the user login request.
* Override vendor method.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function validateLogin(Request $request)
{
$rules = [
'email' => [
'required',
'string',
'exists:users,email,confirmed,1',
],
'password' => [
'required',
'string',
],
];
$messages = [
'email.exists' => 'The combination of email address and password is unknown or the email address has not yet been validated.',
];
$validator = Validator::make($request->all(), $rules, $messages);
// $this->validate($request, $rules, $messages);
if ($validator->fails()) {
return redirect('nl')
->withErrors($validator)
->withInput();
}
}
Проблема в том, что таким образом, кажется, игнорируется проверка того, подтвердил ли пользователь свой адрес электронной почты.И авторизация: используется промежуточное ПО.Теперь измените это:
//$validator = Validator::make($request->all(), $rules, $messages);
$this->validate($request, $rules, $messages);
Теперь проверяется, подтвержден ли адрес, но событие Failed никогда не вызывается.Как я могу добиться как вызова события, так и пользовательских правил?