Выдернуть мои волосы за то, что кажется простой задачей. Я использую username
вместо email
в моем AuthController
используя следующий код:
/**
* Set the login system to use username instead of email address
* @var string
*/
protected $username = 'username';
Это работало хорошо в течение долгого времени (когда я не планировал пользователей активировать свои учетные записи). Однако теперь мне нужно, чтобы пользователи активировали свои учетные записи, и я знаю, что мне нужно сделать дополнительные проверки при входе в систему, прежде чем они смогут увидеть свою панель управления.
Я изменил postLogin()
Метод ниже, к тому, что я думал, будет правильным:
public function postLogin(Request $request)
{
$this->validate($request, [
'username' => 'required', 'password' => 'required',
]);
$credentials = $request->only('username', 'password');
$credentials = array_add($credentials, 'confirmed', '1');
if ($this->auth->attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('username', 'remember'))
->withErrors([
'username' => $this->getFailedLoginMessage(),
]);
}
Но все, что я получаю, это следующая ошибка:
Undefined property: App\Http\Controllers\Auth\AuthController::$auth
Что я делаю не так?
Энди
Только один глюк, который я вижу там.
if ($this->auth->attempt($credentials, $request->has('remember')))
должно быть
if (Auth::attempt($credentials, $request->has('remember')))
В Laravel 5.1 атрибут $ auth не существует в конструкторе класса AuthController, как объяснено в 5.1 руководство по обновлению. Итак, вы ссылаетесь на свойство, которое не существует.