У меня есть базовая форма, позволяющая пользователю изменить свой адрес электронной почты, и я делаю следующую проверку, прежде чем изменять адрес электронной почты:
// Set up the form validation
$validator = Validator::make(
Input::all(),
array(
'email' => 'email|unique:users',
'password' => 'required'
)
);
// If validation fails, redirect to the settings page and send the errors
if ($validator->fails())
{
return Redirect::route('settings')->withErrors($validator)->withInput();
}
Это прекрасно работает, однако после этой базовой проверки я хотел бы проверить, предоставил ли пользователь правильный пароль. Для этого я делаю следующее с базовой библиотекой аутентификации Laravel:
// Find the user and validate their password
$user = Auth::user();
if (!Auth::validate(array('username' => $user->username, 'password' => Input::get('password'))))
{
die("failed to authenticate");
}
Вместо того, чтобы обрабатывать логику, чтобы сообщить пользователю, что их пароль неверен сам, я бы скорее добавил ошибку формы к входу password
, чтобы он отображался точно так же, как регулярная проверка формы. Что-то вроде этого:
if (!Auth::validate(array('username' => $user->username, 'password' => Input::get('password'))))
{
$validator->addError('password', 'That password is incorrect.');
return Redirect::route('settings')->withErrors($validator)->withInput();
}
Таким образом, неправильная ошибка пароля будет отображаться рядом с моим паролем и будет выглядеть как правильная проверка формы.
Как я могу это сделать?