1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【サルが書く】Laravelのpassportでの認証するテーブルをカスタマイズ方法

Last updated at Posted at 2019-11-12

わきゃ〜〜

LaravelのPassportを使い、OAuth2.0のユーザー認証を行いました。
そこで、標準のemail,passwordのみの認証ではない認証方法を取りたかったので、ちょっと調べてみました。

実行環境
Laravel 5.5
Laravel Passport 4.0
PHP 7.x

Laravel Passportは導入した状態でのお話になります。

認証するカラムを変更したい

といっても、かなり簡単にカスタマイズは簡単です。
認証するテーブルのModelに下記のコードを追加するだけです。

usernameを認証するカラムを変更する場合

Model/User.php
public function findForPassport($username)
{
    // 認証カラム名が name の場合
    return $this->where('name', $username)->first();
}

これは実際に認証を行っている、Laravel Passportの Laravel/Passport/Bridge/UserRepository.php にある getUserEntityByUserCredentials() というメソッドがあります。
そのメソッドにModelがfindForPassportというメソッドを持っていれば、メソッドを上書きするような処理があるためです。

認証する条件を変更する

whereをつなげて認証する条件を追加することもできます。
whereで表現できるものであれば、カスタマイズ可能だと思います。

Model/User.php
public function findForPassport($username)
{
    // nameとrole_idの2つの条件で認証を行う
    return $this->where('name', $username)->where('role_id', $role_id)->first();
}

参考文献

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?