Как использовать паспорт Laravel с пользовательским столбцом имени пользователя

Теперь я использую что-то подобное для аутентификации пользователя на моем базовом сайте:

if (Auth::attempt($request->only(['id', 'password']))) {
            //
}

Как я могу изменить этот код для использования пользовательского столбца в качестве имени пользователя? https://laravel.com/docs/5.3/passport#password-grant-tokens

Ответы

Ответ 1

Вы можете использовать метод findForPassport в своей модели пользователя.

Этот метод принимает имя пользователя в качестве аргумента и возвращает модель пользователя

Например:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

    public function findForPassport($username) {
        return $this->where('id', $username)->first();
    }
}

Ответ 2

Слишком поздно, чтобы ответить, но мне трудно было понять это, так что ради полноты и, возможно, помочь другим в будущем.

Если вы посмотрите на эту часть кода паспорта, вы увидите, что он также ищет метод validateForPassportPasswordGrant, поэтому в дополнение к Александру, ответьте, что вы можете аутентифицировать пользователя, используя пользовательские поля.

Надеюсь, что это поможет кому-то.