Laravel - вход с помощью электронной почты и / или логина

По умолчанию пользователи 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"

 

 


Читайте также

Как начинающему (и не только) программисту поднять уровень своей ЗП?

Не все программисты знают когда просить повышение и какие аргументы приводить. В этой статье вы найдёте план действий, который позволит вам повысить уровень вашей заработной платы в кратчайшие сроки.


Оставить коментарий

your email address will not be published. required fields are marked *

Имя *
Email *
Website