web-dev-qa-db-fra.com

Comment utiliser Laravel Passeport avec une colonne de nom d'utilisateur personnalisée

Maintenant, j'utilise quelque chose comme ça pour authentifier l'utilisateur sur mon site de base:

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

Comment puis-je modifier ce code pour utiliser une colonne personnalisée comme nom d'utilisateur? https://laravel.com/docs/5.3/passport#password-grant-tokens

30
tehcpu

Vous pouvez utiliser la méthode findForPassport dans votre modèle utilisateur.

Cette méthode prend le nom d'utilisateur comme argument et renvoie le modèle utilisateur

Par exemple:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

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

Un peu trop tard pour répondre, mais j'ai eu du mal à essayer de comprendre cela, donc pour être complet et peut-être pour aider les autres à l'avenir.

Si vous jetez un oeil à cette partie du code du passeport vous verrez qu'il recherche également une méthode validateForPassportPasswordGrant, donc en plus de la réponse d'Alexandre, c'est ainsi que vous pouvez authentifier un utilisateur en utilisant des champs personnalisés.

J'espère que cela aide quelqu'un.

6
freddieRV