У меня есть логин, в котором пользователь может ввести либо адрес электронной почты, либо ник, адрес электронной почты находится в таблице Users, а ник в таблице Profiles, поэтому, если пользователь вводит ник, он делает leftJoin из Profile в таблицу users и получает это письмо, которое отлично работает (хотя я знаю, что я не реализовал лучший способ). Затем, когда данные вводятся неверно, они возвращаются к форме входа в систему, но она показывает значение value="{{ old('email') }}"
, но я хотел бы показать электронную почту в случае, если пользователь ввел электронную почту или ник, если пользователь ввел ник. Вот как я изменил метод учетных данных из LoginController:
public function emailOrNick($request)
{
$input = request()->input('email');
//What the above code does is to filter the HTTP request that comes in if there's an @ or if it's an email
// by using FILTER_VALIDATE_EMAIL. If it's an email then return email, otherwise return username.
$checker = filter_var($input, FILTER_VALIDATE_EMAIL) ? 'email' : 'nick';
if ($checker === 'nick') {
$nick = $request->email;
$id_user = Profile::where('nick', $nick)->pluck('id_user')->first();
$email = User::where('id', $id_user)->pluck('email')->first();
$request['email'] = $email;
} else if ($checker === 'email') {
$request['email'] = $input;
}
}
public function credentials(Request $request)
{
$this->userService->emailOrNick($request);
return $request->only($this->username(), 'password');
}