Войдите в систему, используя адрес электронной почты и имя пользователя, изменив в AuthenticatesAndRegistersUsers.php

Я использую laravel 5. Мне нужно войти в систему с помощью имени пользователя или электронной почты. Я изменяю следующий фрагмент кода из файла AuthenticatesAndRegistersUsers.php:

public function postLogin(Request $request)
{


    $this->validate($request, [
        'email' => 'required', 'password' => 'required',
    ]);



    $credentials = $request->only('email', 'password');

    if ($this->auth->attempt($credentials, $request->has('remember')))
    {
        return redirect()->intended($this->redirectPath());
    }

    return redirect($this->loginPath())
                ->withInput($request->only('email', 'remember'))
                ->withErrors([
                    'email' => 'These credentials do not match our records.',
                ]);
}

со следующим кодом.

public function postLogin(Request $request)
{


    $field = filter_var($request->input('loginfield'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';


    $this->validate($request, [
        'loginfield' => 'required', 'password' => 'required',
    ]);



    if ($this->auth->attempt([$field=> $request->only('loginfield'), 'password'=>$request->only('password')], $request->has('remember')))
    {
        return redirect()->intended($this->redirectPath());
    }

    return redirect($this->loginPath())
                ->withInput($request->only('loginfield', 'remember'))
                ->withErrors([
                    'email' => 'These credentials do not match our records.',
                ]);
}

Я также изменил код из login.blade.php соответствующим образом. Но когда я передаю ему учетные данные. Выдает ошибку "Обязательно поле электронной почты". В login.blade.php я сделал два изменения. 1. изменил тип ввода с «электронной почты» на «текст» и 2. имя с «электронной почты» на «поле входа». Я делаю что-то не так?


person Hassan Saqib    schedule 18.02.2015    source источник
comment
Возможно, класс LoginRequest выполняется для проверки контроллера. Посмотрите на App\Http\Requests\LoginRequest   -  person Ben Swinburne    schedule 18.02.2015
comment
Спасибо, Бен, я проверил App\Http\Requests.. LoginRequest нет.   -  person Hassan Saqib    schedule 18.02.2015
comment
Приносим извинения, LoginRequest был частью более тяжелой структуры Auth и не существует в tagged 5.0, он был там в процессе разработки.   -  person Ben Swinburne    schedule 18.02.2015
comment
Я думаю, что Guard.php нуждается в каких-то модификациях...   -  person Hassan Saqib    schedule 18.02.2015


Ответы (1)


Переопределение метода postLogin в AuthController — это решение вместо изменения каталога поставщика, если мы хотим реализовать наши собственные требования.

person Hassan Saqib    schedule 18.02.2015