По умолчанию пользователи Laravel проходят аутентификацию с помощью электронной почты и пароля. Но что, если ваш идентификатор - не электронная почта а логин.
Вы можете легко изменить ето, переопределив один метод из трейта AuthenticatesUsers.php.
Вот значение по умолчанию:
trait AuthenticatesUsers
{
// ... other methods
public function username()
{
return 'email';
}
Вы можете скопировать это в свой LoginController.php и просто изменить значение:
class LoginController extends Controller
{
use AuthenticatesUsers;
// ... other methods
public function username()
{
return 'username';
}
}
Сделаем еще один шаг. Что, если ваши пользователи могут войти в систему с помощью электронной почты ИЛИ имени пользователя? Итак, есть поле для ввода под названием «Электронная почта / имя пользователя», и они могут ввести то или другое.
Давайте добавим «трюк» к тому же методу username (), описанному выше. Мы проверяем, является ли введенная строка электронным письмом, в противном случае мы рассматриваем ее как имя пользователя. Эта проверка является функцией PHP, даже не Laravel.
class LoginController extends Controller
{
// ...
public function username()
{
return filter_var(request('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
}
}
Примечание: не забывайте, что в форме входа вам нужно изменить input type = "email" на type = "text"